Skip to main content
Glama
ferelking242

Discord MCP Ultimate

Discord MCP Ultimate

A Discord MCP server with 177 tools, plus a 24/7 bot — full server administration, driven by natural language

License Node Discord.js MCP

Manage an entire Discord server from Claude Desktop, Claude Code, Cursor, VS Code Copilot, or any MCP-compatible client. Messages, channels, roles, permissions, moderation, server settings, AutoMod, emoji and stickers, and a server architect that builds a structure from a plan.

The same repository ships a complete bot (npm run bot) that keeps one gateway connection open: reaction roles, welcome messages, autoroles, levels, logging, moderation with numbered cases, tickets, giveaways, a starboard, temporary voice channels, an autoresponder, slash commands, and the MCP tool surface served over authenticated HTTP so a remote agent can drive it. Everything is configured from Discord with /config, so no separate service is needed. See docs/BOT_FEATURES.md and docs/BOT.md.


What this is

A fork of PaSympa/discord-mcp 2.2.0, MIT licensed. The 99 tools from that baseline are preserved unchanged. This fork adds 78 tools, taking the total to 177, and adds a safety layer that the new tools go through.

Baseline 2.2.0

This fork

Tools

99

177

Server settings (name, icon, banner, Community, widget, onboarding)

—

25 tools

Bot profile management

—

8 tools

Unicode name styling

—

4 tools

Server architect (plan, compare, apply, repair)

—

10 tools

AutoMod

—

6 tools

Emoji and stickers

—

8 tools

Structure backup and restore

—

3 tools

Diagnostics and audit trail

—

6 tools

Message scheduling

—

4 tools

Reaction-role menus

—

3 tools

Scheduling and announcements

—

4 tools

Native polls

—

1 tool

Reaction-role menus (needs the bot)

—

3 tools

24/7 bot: reaction roles, welcome DMs, HTTP MCP

—

src/bot/

Preview-before-apply gating

partial (dry_run)

on every added tool

Full inventory: docs/TOOL_AUDIT.md. What each new tool does: docs/NEW_TOOLS.md.


Related MCP server: discord-provisioner-mcp

Quick start

{
  "mcpServers": {
    "discord": {
      "command": "node",
      "args": ["/absolute/path/to/discord-mcp-ultimate/dist/index.js"],
      "env": {
        "DISCORD_TOKEN": "YOUR_BOT_TOKEN_HERE"
      }
    }
  }
}
git clone https://github.com/ferelking242/discord-mcp-ultimate.git
cd discord-mcp-ultimate
npm ci && npm run build

No bot yet? docs/INSTALLATION.md covers creating the application, the intents, the exact permission list, and the invite URL.

Run it 24/7 as a bot

npm run bot          # build, then start the bot

The bot keeps one Discord connection and runs every server feature from it: welcome messages, autoroles, levels, logging, moderation, tickets, giveaways, starboard, temporary voice channels, an autoresponder and slash commands.

Add the HTTP plane to expose MCP remotely:

MCP_HTTP_ENABLED=true MCP_HTTP_TOKEN=$(openssl rand -hex 32) npm run bot:start

That exposes /health (no auth), /status and /mcp (bearer token).

Guides: docs/BOT_FEATURES.md for the features and docs/BOT.md for deployment — systemd, Docker, reverse proxy, troubleshooting.

The HTTP plane binds to 127.0.0.1 and stays off unless asked for. It holds the bot token and the destructive tool surface, so an unauthenticated port would be remote administration of the server; MCP_HTTP_ENABLED=true without MCP_HTTP_TOKEN is refused at startup rather than left open.

Once connected, ask it to run discord_verify_setup — it takes no arguments and tells you whether the token, the intents, the toolsets and the connection are all in order.


What it can do

Server administration

Full server-level settings, which the baseline did not cover: rename the server, change its icon and banner, set the description, splash, verification level, explicit content filter, notification defaults, locale, AFK channel and timeout, system/rules/public-updates/safety-alerts channels, the system channel notice flags, the premium progress bar, Community, the widget, the welcome screen and onboarding.

Each tool reports what Discord actually returned, and states the limits: a banner needs boost level 2, a description needs a discoverable or Community server, Community needs a rules channel and a public-updates channel.

Bot profile, audited separately

Four things that are easy to conflate, kept apart on purpose:

Field

Scope

Settable?

Server name / icon

one server

yes, Manage Server

Bot nickname

one server

yes

Bot global username / avatar

all servers

yes

Bot banner, global bio, accent colour

global

no — the bot API does not expose them

discord_get_bot_profile_limits returns the changeable and non-changeable lists with reasons, so "can you change my banner?" gets an answer from a documented list rather than a guess.

Unicode name styling

Twelve decoration styles for categories, channels, roles, forums and announcement channels — minimalist, gaming, cyberpunk, futuristic, luxury, fantasy, anime, elegant, geometric, bordered, emoji-led and fullwidth.

✦・announcements
「📢」・news
╭・community・╮
💬︱general-chat
୨୧・suggestions・୨୧

Deterministic (the same input always produces the same output, so re-running a theme converges), collision-checked, 100-character capped, and stripped of zero-width characters.

Stated plainly, in every one of these tool descriptions: Discord has no per-server font setting and no API for one. This decorates text with Unicode characters. It is not a font engine.

Server architect

Describe the server you want and the architect turns it into an ordered plan, diffs it against what exists, and creates only what is missing. It is idempotent and resumable: a run that fails halfway can be repaired by re-running, because every step has a stable key and failures come back with their index.

Ordering is fixed — roles, then categories, then channels — because channel permission overwrites reference role IDs that must already exist.

A bot cannot create a new Discord server. That needs a user OAuth2 token. discord_architect_explain_limits says so and gives the workflow that does work: create the server yourself, invite the bot, then apply the plan.

Safety

Every added mutating tool previews by default. confirm: true applies. Bulk deletion additionally requires the literal string CONFIRM DELETE, enforced by the tool's JSON Schema so a model sees the requirement in tools/list before it calls.

Also included: permission preflight with readable errors, role-hierarchy checks, DISCORD_ALLOWED_GUILDS scoping, duplicate-plan suppression, paced bulk loops, and an audit trail readable through discord_read_audit_trail.

Honest limits are documented rather than glossed: the audit trail is in-process and capped at 500 entries; a structure backup does not contain messages; deleted entities are not recoverable.

Details: docs/SECURITY.md.


Configuration

Add to claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "discord": {
      "command": "node",
      "args": ["/absolute/path/to/discord-mcp-ultimate/dist/index.js"],
      "env": {
        "DISCORD_TOKEN": "YOUR_BOT_TOKEN_HERE",
        "DISCORD_GUILD_MEMBERS": "true",
        "DISCORD_MESSAGE_CONTENT": "true"
      }
    }
  }
}

Restart Claude Desktop after saving.

claude mcp add discord -- node /absolute/path/to/discord-mcp-ultimate/dist/index.js

Set DISCORD_TOKEN in the environment Claude Code runs in.

~/.cursor/mcp.json, same shape as the Claude Desktop config.

.vscode/mcp.json:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "discord-token",
      "description": "Discord Bot Token",
      "password": true
    }
  ],
  "servers": {
    "discord": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/discord-mcp-ultimate/dist/index.js"],
      "env": { "DISCORD_TOKEN": "${input:discord-token}" }
    }
  }
}
docker build -t discord-mcp-ultimate .
docker run --rm -i -e DISCORD_TOKEN discord-mcp-ultimate

-e DISCORD_TOKEN with no value passes it through from your environment, so the token never lands in a config file.


Environment variables

Variable

Default

Purpose

DISCORD_TOKEN

(required)

Bot token. Never commit it.

DISCORD_GUILD_MEMBERS

true

Request the Server Members intent. Set false if the portal toggle is off, or the connection closes with code 4014.

DISCORD_MESSAGE_CONTENT

true

Request the Message Content intent. Set false for a purely administrative agent — it removes message-body reading entirely.

DISCORD_ALLOWED_GUILDS

(unset)

Comma-separated guild IDs. When set, calls outside the list are rejected at parse time.

DISCORD_MCP_TOOLSETS

(unset)

Comma-separated toolset names to expose. Unset or all exposes everything.

See .env.example.

Toolset names: discovery, messages, channels, permissions, members, roles, moderation, screening, stats, forums, webhooks, scheduled_events, invites, dm, guild_settings, bot_profile, style, architect, automod, expressions, backup, diagnostics, scheduler.

Narrowing the toolset is the most effective way to make a model more reliable. Fewer tools means less to choose between.


Examples

Show me every server the bot is in, with member counts.

Rename the server to Watchtower Community.

Update the server icon with this image: https://example.com/icon.png

Read the full settings of server 123456789012345678.

Generate 5 stylized variants for a channel called "announcements".

Apply a futuristic theme to all channel names, but show me the preview first.

Plan a community server for Watchtower with a welcome area, rules, release
announcements, technical support, general discussion, developer roles and two
voice channels. Use a sober futuristic theme.

Compare that plan against the server and create only the missing pieces.

Check which permissions the bot is missing and tell me which tools are affected.

Diagnose why creating a channel in the announcements category fails.

Back up the roles, categories and permissions, then diff it against the server.

Show me a preview before deleting these channels: 111..., 222...

Destructive requests return a preview first, with the exact plan and no change applied. Applying requires a second call with an explicit confirmation.


En français

Discord MCP Ultimate est un serveur MCP pour Discord, avec 177 outils, un bot 24h/24 et un tableau de bord web, pilotable en langage naturel depuis Claude Desktop, Claude Code, Cursor, VS Code Copilot ou tout client compatible MCP.

C'est un fork de PaSympa/discord-mcp version 2.2.0 (licence MIT). Les 99 outils d'origine sont conservés à l'identique. Ce fork en ajoute 78, pour un total de 177.

Ce qui a été ajouté

Domaine

Outils

Ce que ça permet

Paramètres du serveur

24

Nom, icône, bannière, description, niveau de vérification, filtrage de contenu, salon AFK, Community, widget, écran d'accueil, onboarding

Profil du bot

8

Pseudonyme par serveur, avatar global, avatar par serveur, nom global, et l'audit de ce qui n'est pas modifiable

Styles Unicode

4

12 styles décoratifs pour catégories, salons, rôles et forums, avec aperçu et cohérence de nomenclature

Architecte de serveur

10

Plan détaillé, comparaison avec l'existant, création, réparation, modèles, suppression

AutoMod

6

Règles de modération automatique et jeu de règles de départ

Emojis et stickers

8

Création, modification, suppression

Sauvegarde et restauration

3

Export de la structure, comparaison, restauration additive

Diagnostic

6

Vérification de l'installation, permissions manquantes, journal d'audit

Planification

4

Messages programmés, annonces structurées

Rôles par réaction

3

Menus d'auto-attribution : l'IA crée le menu, le bot distribue les rôles

Le dépôt contient aussi un bot complet et un tableau de bord web, qui ne sont pas des outils MCP mais des processus : voir la section suivante.

Le bot 24h/24

npm run bot démarre un processus qui garde une seule connexion Discord et fait tourner tout le serveur : accueil, rôles automatiques, niveaux, journaux, modération avec dossiers numérotés, tickets, concours, starboard, salons vocaux temporaires, répondeur, commandes slash, rôles par réaction et MCP en HTTP.

npm run bot        # construit puis démarre

Le MCP est alors joignable sur /mcp, avec un jeton Bearer obligatoire. /health répond sans authentification pour une sonde de supervision. Le port n'est pas ouvert par défaut : MCP_HTTP_ENABLED=true et MCP_HTTP_TOKEN sont tous les deux requis, sinon le processus refuse de démarrer.

Un menu de rôles créé par l'IA est pris en compte par le bot en moins de deux secondes, sans redémarrage : les deux processus se rejoignent sur un fichier JSON que le bot surveille. Il en va de même pour toute la configuration.

Commandes disponibles (25) : /ping, /rank, /leaderboard, /serverinfo, /userinfo, /avatar, /poll, /remind, /afk, /afk-list, /permissions, puis la modération — /warn, /ban, /kick, /timeout, /untimeout, /note, /cases, /purge, /slowmode, /lock, /unlock — puis /giveaway, /ticket-panel et /config.

Chaque action de modération écrit un cas numéroté avant d'appeler Discord : la trace existe même si l'appel échoue ensuite. La hiérarchie est vérifiée avant l'appel, donc l'erreur dit la vraie raison (la cible est au-dessus du bot) au lieu d'un « permissions manquantes » trompeur.

Configuration

Tout se règle depuis Discord, avec /config : aucun service supplémentaire, aucun tableau de bord, aucune base de données. /config show affiche la configuration complète (en fichier JSON), et /config set, /config channel, /config text, /config number, /config role, /config import et /config reset la modifient. Chaque valeur passe par le même schéma Zod que le bot lit, donc une valeur refusée est rejetée au moment où vous la tapez. Voir docs/BOT_FEATURES.md.

Guides complets : docs/BOT_FEATURES.md pour les fonctionnalités et docs/BOT.md pour le déploiement — systemd, Docker, reverse proxy, dépannage.

Points importants, énoncés franchement

  • Un bot ne peut pas créer un nouveau serveur Discord. L'API exige un jeton OAuth2 d'utilisateur. Créez le serveur vous-même, invitez le bot, puis laissez l'architecte construire la structure.

  • Discord n'a aucune police personnalisée. Le générateur de styles décore du texte avec des caractères Unicode. Ce n'est pas un moteur de polices, et les outils le disent.

  • La bannière, le splash et l'URL personnalisée sont réservés aux serveurs de niveau 2 de boost.

  • Une sauvegarde ne contient pas les messages. Discord n'expose pas d'export global.

  • Les suppressions sont irréversibles. Discord n'a pas d'annulation, et le serveur ne prétend pas le contraire.

  • Un serveur MCP en stdio n'a pas d'écouteur permanent. Entre deux appels d'outil, rien ne reçoit les événements Discord. C'est pour cela que les rôles par réaction passent par le bot : lui reste éveillé.

  • Le jeton Bearer circule en clair sur http://. En local, sans importance. À distance, mettez un reverse proxy TLS devant.

  • Deux processus avec le même jeton se disputent la session Discord. N'en lancez qu'un.

Sécurité

Tout outil qui modifie quelque chose fait un aperçu par défaut. Il faut rappeler l'outil avec une confirmation explicite pour appliquer. Les suppressions en masse exigent en plus la chaîne littérale CONFIRM DELETE, vérifiée par le schéma JSON de l'outil — le modèle la voit donc dans tools/list avant d'appeler.

S'y ajoutent : la vérification des permissions avant chaque action, le contrôle de la hiérarchie des rôles, la limitation à certains serveurs via DISCORD_ALLOWED_GUILDS, la protection contre les boucles, et un journal d'audit.

Détails complets : docs/SECURITY.md.

Installation

git clone https://github.com/ferelking242/discord-mcp-ultimate.git
cd discord-mcp-ultimate
npm ci && npm run build

Puis, dans la configuration de votre client MCP :

{
  "mcpServers": {
    "discord": {
      "command": "node",
      "args": ["/chemin/absolu/vers/discord-mcp-ultimate/dist/index.js"],
      "env": { "DISCORD_TOKEN": "VOTRE_JETON_ICI" }
    }
  }
}

Les intents, la liste exacte des permissions à cocher et l'URL d'invitation sont dans docs/INSTALLATION.md.

Exemples de demandes

Renomme le serveur en Watchtower Community.

Mets à jour son icône avec cette image : https://exemple.fr/icone.png

Lis tous les paramètres du serveur 123456789012345678.

Génère 5 variantes stylisées pour un salon nommé « annonces ».

Applique un thème futuriste à tous les noms de salons, mais montre-moi l'aperçu
avant.

Prépare un serveur communautaire pour Watchtower avec accueil, règles, annonces
de versions, support technique, discussions, rôles de développeurs et salons
vocaux. Utilise un thème futuriste sobre.

Compare ce plan au serveur et ne crée que ce qui manque.

Vérifie les permissions manquantes du bot et dis-moi quels outils sont touchés.

Montre-moi un aperçu avant de supprimer ces salons : 111..., 222...

Tests

npm test

282 tests, exécutés sans jeton Discord et sans serveur réel, grâce à des mocks et un transport MCP en mémoire. test/serverHandshake.test.ts effectue une vraie poignée de main MCP et vérifie la liste d'outils annoncée.


Documentation

Document

Contents

docs/TOOL_AUDIT.md

All 177 tools: parameters, permissions checked, hints, output schemas, and the Discord limitations that apply

docs/NEW_TOOLS.md

The 78 added tools, module by module, with the design decisions

docs/BOT_FEATURES.md

Every bot feature: welcome, autoroles, levels, logging, moderation, tickets, giveaways, starboard, voice, autoresponder

docs/CREDITS.md

The open-source bots studied while designing the bot layer

docs/INSTALLATION.md

Bot creation, intents, the full permission list, every client config, verification

docs/SECURITY.md

Credential handling, preview/confirm gates, permission preflight, prompt-injection boundaries

CHANGELOG.md

Version history


Limitations

Discord platform limits, stated rather than hidden. Each is also in the description of the tool it affects.

  • A bot cannot create a new server. Requires a user OAuth2 token.

  • No custom fonts. Unicode decoration only; Discord has no font API.

  • Server banner, splash and vanity URL are gated behind boost level 2 and specific server features.

  • No message history in a backup. No bulk export endpoint exists.

  • Bulk delete cannot remove messages older than 14 days.

  • Bot banner, global bio and accent colour are not settable by a bot.

  • The audit trail is in-process, capped at 500 entries, lost on restart.

  • Deleted entities are gone. Discord has no undo.

  • Scheduled tasks live in the server process and do not survive a restart. Use an external scheduler for durable timing.

  • A bot cannot create a new server, so the bot configures servers you have already created and invited the bot to.

  • Giveaway draws are polled every 20 seconds, not scheduled, so a draw can happen up to 20 seconds after the deadline. That is deliberate: a timer would not survive a restart, and a giveaway that ends while the bot is down would never be drawn.

  • Configuration is Discord-only. The bot has no web panel; it is built for a self-hosted bot with one operator.

  • The bearer token crosses the network in clear over http. Locally that is fine; expose the port only behind TLS.

  • Logging cannot name the actor without View Audit Log. The event is still logged, just without the moderator's name.


Development

npm ci
npm run build      # tsc
npm run lint       # eslint
npm test           # node:test, 282 tests
npm run format     # prettier

The test suite runs entirely against mocks and in-memory MCP transports — no Discord token and no live server are needed. test/serverHandshake.test.ts performs a real MCP handshake and asserts the advertised tool list.


Credits and licence

MIT. See LICENSE.

This is a fork of PaSymPa/discord-mcp by Léandre Moreau. The 99 tools in the imported baseline are that project's work, preserved unchanged, including their original copyright notice — see NOTICE. The 78 added tools, the bot, the safety layer and the documentation are new in this fork.

docs/CREDITS.md records the other open-source bots studied while designing the bot layer, and states plainly that no code was copied from any of them.

Available Tools

177 tools
discord_add_reactionA
Idempotent

Add a single emoji reaction to a message as the bot. Requires the Add Reactions and Read Message History permissions. Use discord_remove_reactions to undo. Idempotent: re-adding the bot's existing reaction has no effect.

NameRequiredDescriptionDefault
emojiYesUnicode emoji (e.g. '👍') or a custom emoji in 'name:id' format.
channel_idYesID (snowflake) of the channel or thread containing the message.
message_idYesID of the message to react to.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, and the description reinforces this with a concrete explanation of the idempotent behavior. It adds valuable context beyond the annotations by stating the required permissions and that the action is performed as the bot. There is no contradiction with any annotation.

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

Conciseness5/5

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

Four short sentences, each carrying distinct useful information: action, permissions, undo path, and idempotency. The core action is front-loaded, and there is no redundant or filler wording.

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

Completeness5/5

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

For a simple three-parameter action with no output schema, the description covers the essential context: what it does, what permissions are needed, how to undo it, and its idempotent nature. The schema already documents parameter formats, so nothing important is missing for an agent to invoke this correctly.

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

Parameters3/5

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

The schema covers all parameters with descriptions, including emoji format ('name:id' for custom emojis) and snowflake patterns for IDs. The description adds little parameter-specific meaning beyond 'single emoji reaction', but with 100% schema coverage, the baseline of 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource: adds a single emoji reaction to a message as the bot. The phrase 'as the bot' clarifies the acting identity, and 'single emoji reaction' disambiguates it from broader message actions. This clearly distinguishes it from related siblings like discord_remove_reactions and discord_get_reactions.

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

Usage Guidelines4/5

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

Provides explicit permission requirements (Add Reactions and Read Message History), which tells the agent when the tool is usable. It also names discord_remove_reactions as the undo alternative, giving clear routing for the reverse operation. It does not discuss choosing this over sending an emoji in a message, but that is not a strong competing alternative.

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

discord_add_roleA
Idempotent

Assign an existing role to a member. Requires the Manage Roles permission, and the role must be below the bot's highest role. Idempotent: assigning a role the member already has has no effect. Use discord_remove_role to undo.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the server audit log.
role_idYesID (snowflake) of the role to assign.
user_idYesDiscord user ID (snowflake) of the member to give the role to.
guild_idYesDiscord server (guild) ID (snowflake).

TDQS

A4.5/5.0
Behavior4/5

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

The description adds meaningful behavioral context beyond the annotations: the Manage Roles permission requirement, the role hierarchy restriction, and the concrete effect of idempotency (assigning an already-held role has no effect). These details are not present in the raw annotations, which only flag idempotentHint.

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

Conciseness5/5

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

Three sentences, each earning its place: the action, the preconditions, and the idempotency/undo behavior. It is front-loaded with the core purpose and contains no filler.

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

Completeness5/5

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

For a straightforward role-assignment tool, the description fully covers the necessary execution context: required permission, hierarchy constraint, idempotent behavior, and the inverse sibling. No output schema exists, but the description covers the aspects that matter for invoking the tool correctly.

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

Parameters4/5

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

The schema already covers all four parameters with 100% description coverage, which sets a baseline of 3. The description adds extra meaning beyond the schema by clarifying that the role must be an existing role and must sit below the bot's highest role, directly constraining the valid role_id values.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Assign an existing role to a member.' It also distinguishes from the obvious sibling by naming discord_remove_role as the undo operation, so an agent can immediately tell this tool apart from related role and member tools.

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

Usage Guidelines4/5

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

It states clear preconditions for use: requires the Manage Roles permission and the role must be below the bot's highest role. It also points to discord_remove_role as the inverse operation. It stops short of explicitly listing when not to use this tool versus other role-related tools, but the undo hint and role constraints provide solid guidance.

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

discord_apply_automod_baselineA
Idempotent

Create a sensible baseline of AutoMod rules for a community server in one call: block Discord invite links, block common scam/phishing keywords, block mention spam, and time out repeat offenders. PREVIEWS BY DEFAULT: returns the rules that would be created without creating them; re-call with confirm:true to apply. Rules that already exist by name are skipped, so re-running is safe. Requires Manage Server and the AutoModeration feature (Community).

NameRequiredDescriptionDefault
confirmNoSet true to actually create the rules. Default false returns a preview.
guild_idYesDiscord server (guild) ID (snowflake).
alert_channel_idNoChannel for the 'send_alert_message' action. Omit for block-only rules.

Output Schema

NameRequiredDescription
modeYes
failedYes
createdYes
plannedYes
skippedYes

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: the tool is a no-op unless confirm:true (critical since readOnlyHint=false would otherwise suggest immediate writes), existing rules with the same name are skipped so re-running is safe (explaining the idempotentHint), and repeat offenders get timed out, meaning members are affected, not just config. Required permissions and the Community feature gate are also disclosed.

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

Conciseness5/5

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

Front-loads what the tool creates, then immediately states the preview-by-default contract in caps, followed by idempotency and prerequisites. Every sentence carries distinct operational information with no filler.

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

Completeness5/5

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

Given an output schema (so return shape needs no explanation), three simple params, and mutation semantics, the description covers everything an agent needs: what gets created, that nothing happens without confirm, that reruns are safe, and what permissions the operation requires.

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

Parameters3/5

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

Schema coverage is 100%, so guild_id, confirm, and alert_channel_id are already documented in the input schema. The description reinforces the confirm/preview contract but says nothing about alert_channel_id or its omission semantics, adding no parameter meaning beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb (create) and a precisely scoped resource (a baseline set of AutoMod rules), and enumerates exactly what the baseline contains: invite-link blocking, scam/phishing keyword blocking, mention-spam blocking, and timeouts for repeat offenders. This clearly separates it from sibling tools like discord_create_automod_rule (single rule) and discord_list_automod_rules.

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

Usage Guidelines4/5

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

Gives concrete conditions: use this to establish a whole baseline 'in one call', a preview is returned by default, and the caller must re-invoke with confirm:true to apply. Prerequisites (Manage Server and the Community/AutoModeration feature) and the re-run safety are stated. It does not explicitly name discord_create_automod_rule as the alternative for one-off rules, so routing to siblings is only implied by 'in one call'.

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

discord_apply_name_themeA
Idempotent

Rename existing channels, categories and roles in a server to a Unicode-styled theme. PREVIEWS BY DEFAULT: returns the exact rename list without changing anything. Re-call with confirm:true to apply. Renames are applied one at a time and a failure on one entity does not stop the rest; per-entity results are returned. Requires Manage Channels (and Manage Roles for roles). This changes name text only: Discord cannot apply a custom font. Renaming a channel does not change its ID, so existing links keep working.

NameRequiredDescriptionDefault
themeYesGlobal style to apply.
confirmNoSet true to actually apply the renames. Default false returns a preview.
includeNoWhich entity groups to rename. Defaults to categories and channels.
guild_idYesDiscord server (guild) ID (snowflake).
keep_plainNoNames (exact, current) to leave untouched, e.g. ['general', 'rules'].

Output Schema

NameRequiredDescription
modeYes
errorNo
appliedYes
plannedYes
renamedYes
skippedYes
failuresYes
collisionsNo

TDQS

A4.7/5.0
Behavior5/5

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

Goes well past the annotations: discloses that preview is the default, that renames happen one at a time with per-entity failure isolation and per-entity results, the permission requirements (Manage Channels, plus Manage Roles for roles), that only name text changes because Discord cannot apply a custom font, and that channel IDs/links survive renaming. None of this is recoverable from idempotentHint/destructiveHint/openWorldHint.

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

Conciseness5/5

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

Front-loads purpose, then the critical preview-by-default constraint in caps in the second sentence. Each remaining sentence covers a distinct risk (partial failure, permissions, font misconception, link stability) with no repetition.

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

Completeness5/5

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

An output schema exists, yet the description still flags per-entity results, which is the piece an agent needs to interpret that output. For a multi-entity mutation gated behind confirm, permission requirements and failure semantics are both covered, leaving nothing essential missing.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3; the description earns a bump by explaining the confirm gate semantics and the blast radius of what gets renamed. It adds little on theme enum values or keep_plain matching beyond the schema, but the confirm behavior is genuinely clarified.

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

Purpose5/5

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

States a specific verb, resource set, and scope: 'Rename existing channels, categories and roles in a server to a Unicode-styled theme.' That bulk, server-scoped framing distinguishes it from the singular styling siblings (discord_style_name, discord_style_preview) without needing to name them.

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

Usage Guidelines4/5

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

The preview-by-default / 'Re-call with confirm:true to apply' pattern is explicit workflow guidance an agent can act on immediately. It stops short of naming alternatives (e.g. discord_style_preview for a single name, discord_list_name_styles for palette choice), so routing between siblings is left to inference.

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

discord_architect_applyA
Idempotent

Build a plan against the live server. PREVIEWS BY DEFAULT: returns the step list without changing anything; re-call with confirm:true to apply. Idempotent by name: a role, category or channel that already exists with the planned name is skipped rather than duplicated, so a re-run after a failure repairs the server instead of doubling it. Steps run in order (roles, then categories, then channels) and one failing step does not stop the rest: per-step results are returned so the build can be resumed. Requires Manage Channels and Manage Roles. A duplicate-suppression window rejects an identical plan re-submitted within 60 seconds. This creates structure inside an existing server; it cannot create a new Discord server (see discord_architect_explain_limits).

NameRequiredDescriptionDefault
planYes
reasonNoOptional reason recorded in the audit log.
confirmNoSet true to actually create. Default false returns a preview.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
modeYes
failedYes
appliedYes
createdYes
skippedYes
next_stepsYes

TDQS

A4.9/5.0
Behavior5/5

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

Goes well past the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false): discloses name-based idempotency and skip semantics, execution ordering across the three plan sections, per-step failure isolation with resumability, required permissions, and a 60-second duplicate-suppression window. These are exactly the behaviors an agent needs before applying 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.

Conciseness5/5

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

Front-loads the preview-by-default behavior, which is the single most decision-relevant fact, then layers idempotency, ordering, failure handling, permissions, and scope boundary. Six dense sentences, none redundant.

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

Completeness5/5

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

A destructive-capable mutation with a nested plan schema and an output schema; the description covers safety (preview default), reversibility (idempotent repair), failure semantics, auth prerequisites, and rate limiting. Return values are covered by the output schema, so no gap remains.

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

Parameters4/5

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

Schema coverage is 75% and the nested plan object is heavily documented, so the baseline is 3. The description adds real semantics the schema does not carry: that confirm gates preview vs. apply, that plan entries are matched by name for idempotent skipping, and that section order dictates execution order.

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

Purpose5/5

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

States a specific verb and resource: builds server structure against a live guild from a plan, distinguishing it from planning-only siblings by emphasizing that it applies to the live server. The final sentence explicitly bounds scope ('cannot create a new Discord server') and routes to discord_architect_explain_limits.

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

Usage Guidelines5/5

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

Gives the exact invocation path: call once for a preview, re-call with confirm:true to apply. States the precondition (Manage Channels and Manage Roles) and names the sibling tool to use instead when the intent is out of scope. There is also guidance on re-running after failures.

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

discord_architect_compareA
Read-only

Diff a plan against the live server: which roles, categories and channels are missing (would be created), which already exist, and which exist on the server but are absent from the plan (candidates for removal, never removed automatically). Read-only. Use this to answer 'what would change?' or to detect drift before repairing a half-finished build.

NameRequiredDescriptionDefault
planYes
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
summaryYes
guild_idYes
to_createYes
only_on_serverYes
already_presentYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description reinforces this with 'Read-only' plus the crucial safety detail that unplanned server items are 'candidates for removal, never removed automatically.' That non-obvious guarantee is real added value beyond the annotations; it stops short of 5 only because it says nothing about scale, pagination, or cost of the diff.

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

Conciseness5/5

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

Two tight sentences: the diff semantics and result buckets come first, the safety caveat second, the usage guidance last. No filler or restatement of the tool name.

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

Completeness4/5

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

An output schema exists, so return shape needn't be described, and the read-only profile is covered. The remaining gap is that the deeply nested plan format is left entirely to the schema, which is acceptable but means the description doesn't help an agent construct a valid plan.

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

Parameters3/5

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

Schema coverage is 50% and the nested plan object has no top-level description, so the description must carry weight. It does frame 'plan' as a desired-state spec being compared to live state, which helps, but it adds nothing about role keys, theme styling, categories, or system channel slots that the nested schema defines.

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

Purpose5/5

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

States a specific verb and resource: diffs a plan against the live server, and enumerates the three result buckets (missing/would-be-created, existing, present-but-unplanned). This clearly separates it from mutation siblings like discord_architect_apply and discord_architect_repair.

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

Usage Guidelines4/5

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

Gives concrete usage triggers: answer 'what would change?' and detect drift before repairing a half-finished build, which implicitly routes the agent to repair afterward. It does not explicitly name a sibling tool or state when not to use it, so it falls short of a 5.

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

discord_architect_create_templateA

Create a Discord guild template from the current server, capturing its channels, roles and permissions as a shareable code. Requires Manage Server. IMPORTANT: the code can only be used to create a new guild by a human in the Discord client; a bot cannot apply a template to create a guild. Returns the template code and shareable URL.

NameRequiredDescriptionDefault
nameYesTemplate name.
guild_idYesDiscord server (guild) ID (snowflake).
descriptionNoTemplate description (max 120 chars).

Output Schema

NameRequiredDescription
urlYes
codeYes
nameYes

TDQS

A4.1/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing the required permission level and the downstream limitation that a bot cannot consume the produced template code — neither of which is derivable from readOnlyHint/destructiveHint/openWorldHint. The return-value sentence is slightly redundant with the existing output schema, keeping it from 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.

Conciseness4/5

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

The permission requirement and the human-only application caveat are front-loaded where an agent will read them first, and no sentence is filler. The final sentence about return values is mild duplication of the output schema, a minor economy loss.

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

Completeness4/5

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

For a 3-parameter, low-destructiveness creation tool with an output schema, the description covers purpose, permission gate, and the most important failure mode (bots can't redeem the code). Only the sibling-alternative guidance is missing, which is what keeps it off a 5.

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

Parameters3/5

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

Schema coverage is 100% and all three parameters carry their own descriptions, so the schema does the heavy lifting. The description adds a little framing ('from the current server') but does not clarify the name-vs-guild_id relationship or note that guild_id is the source server rather than a target, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Create a Discord guild template') plus what the artifact captures (channels, roles, permissions) and what it produces (a shareable code). This clearly separates it from siblings like discord_architect_list_templates, discord_architect_delete_template, and discord_export_structure.

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

Usage Guidelines4/5

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

Gives an explicit precondition ('Requires Manage Server') and a critical usage boundary: the resulting code cannot be applied by a bot, only by a human in the Discord client. It does not, however, point to alternatives such as discord_export_structure or discord_architect_apply for bot-driven replication, so the sibling routing is left to inference.

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

discord_architect_delete_structureA
Destructive

Delete channels, categories and roles from a server, driven by a plan (everything in the plan is removed) or by explicit IDs. IRREVERSIBLE: deleted channels lose their message history permanently, and deleted roles are removed from every member. REQUIRES the literal confirmation string "CONFIRM DELETE"; without it the tool returns a preview and deletes nothing. Deletes are performed one at a time and per-entity failures are reported. Requires Manage Channels and Manage Roles.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).
role_idsNoRole IDs to delete.
channel_idsNoChannel IDs to delete.
confirmationNoType exactly "CONFIRM DELETE" to apply. Omit to preview only.

Output Schema

NameRequiredDescription
modeYes
failedYes
appliedYes
deleted_rolesYes
deleted_channelsYes
would_delete_rolesYes
would_delete_channelsYes

TDQS

A4/5.0
Behavior5/5

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

Goes well beyond destructiveHint=true: it discloses that message history is permanently lost, that deleted roles are stripped from every member, that a literal 'CONFIRM DELETE' is required or nothing is deleted, that deletions are sequential with per-entity failure reporting, and which Discord permissions are needed. This is the kind of consequence detail an agent needs before an irreversible mutation.

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

Conciseness5/5

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

Five tight sentences, front-loaded with the action and the irreversibility warning before mechanics and permissions. No filler; each sentence carries a distinct fact.

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

Completeness4/5

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

Covers consequences, gating, permissions, and failure behavior adequately for a destructive bulk operation, and an output schema exists so return values need not be described. The unexplained 'plan' mode, which has no corresponding parameter, is the one loose end.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents guild_id, channel_ids, role_ids and the exact confirmation constant; the description mostly restates the confirmation behavior. It also references being 'driven by a plan', but no plan parameter exists in the schema, which adds ambiguity rather than meaning.

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

Purpose4/5

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

States a specific verb and resource set (delete channels, categories and roles) plus the two input modes (plan-driven or explicit IDs), so the agent knows it is a bulk structural delete. It never names the single-entity siblings discord_delete_channel or discord_delete_role, so the boundary with those tools is left to inference.

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

Usage Guidelines3/5

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

It implies when this tool is appropriate (bulk removal of structure, or applying a plan) and reveals the preview-vs-apply mechanism, but it gives no explicit exclusions or 'use X instead for a single channel/role' routing against discord_delete_channel, discord_delete_role, or discord_architect_apply.

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

discord_architect_delete_templateA
DestructiveIdempotent

Delete a guild template by its code. Requires Manage Server. Not reversible: the template code stops working immediately for anyone who has it. Returns a confirmation.

NameRequiredDescriptionDefault
codeYesTemplate code to delete.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
deletedYes

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations: it names the required permission, spells out the real-world consequence of destruction ('the template code stops working immediately for anyone who has it'), and notes the confirmation return. That is exactly the extra context the destructiveHint=true flag cannot convey on its own, and nothing here contradicts 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.

Conciseness5/5

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

Three short sentences: action, precondition, consequence/return. The irreversibility warning is front-loaded after the action, and no sentence is filler.

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

Completeness5/5

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

For a two-parameter deletion tool with rich annotations and an output schema, the description covers the action, the permission gate, the blast radius, and the response shape. An agent has everything needed to decide and call correctly.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters (guild_id pattern, code) are documented in the schema. The description only reflects 'code' via 'by its code' and adds no format or constraint detail beyond the structured fields, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource with the lookup key ('Delete a guild template by its code'), which is clearly distinct from the structure-manipulation siblings like discord_architect_delete_structure and from create/list template tools. It stops short of explicitly naming or contrasting any sibling, which keeps it out of the top band.

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

Usage Guidelines3/5

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

'Requires Manage Server' gives a concrete precondition, but the description never says when to choose this over discord_architect_delete_structure or the other architect tools, nor when not to delete. Usage is only implied by the resource name.

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

discord_architect_explain_limitsA
Read-only

Explain what this server can and cannot do about creating Discord servers, with the API reason. Read-only. Use this when asked to 'create a new server': a bot token cannot create a guild. GET /users/@me/guilds and POST /guilds are restricted, so the documented path is: create the server manually (or from a template), invite the bot, then build the structure inside it with discord_architect_apply.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
can_doYes
cannot_doYes
recommended_workflowYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered; the description adds the reason behind the limit (GET /@me/guilds and POST /channels are restricted) and restates read-only in prose. It stops short of describing the shape of the explanation returned, though the output schema presumably covers that.

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

Conciseness4/5

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

Three sentences, front-loaded with the purpose, then the trigger, then the workaround. The final sentence is content-dense rather than padded, though it packs API endpoints and a multi-step workflow into one long clause that could be split.

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

Completeness5/5

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

For a zero-parameter, read-only explainer with an output schema, the description supplies everything needed to decide to call it: what it answers, when to call it, why the limitation exists, and the manual workaround. No gaps remain for correct invocation.

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

Parameters4/5

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

Zero parameters, so the baseline of 4 applies; there is no argument semantics to explain. The description correctly adds nothing about inputs, keeping the call signature unambiguous.

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

Purpose5/5

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

States a specific verb and subject: 'Explain what this server can and cannot do about creating Discord servers', plus the reason (API restriction). It is unmistakably the capability-limits explainer among the architect_* family, which otherwise plans, reads, applies, and deletes structures.

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

Usage Guidelines5/5

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

Gives an explicit trigger: use this when asked to 'create a new server'. It also supplies the when-not path in the same breath — create manually or from a template, invite the bot, then use discord_architect_apply to build the structure — naming the concrete sibling to hand off to.

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

discord_architect_list_templatesA
Read-only

List the guild templates this server has created, with their codes, sync status and update times. Read-only.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
templatesYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so 'Read-only' merely restates structured data. The description does add real context: the listing is scoped to templates this guild created, and results carry codes, sync status, and update times, but nothing about volume, ordering, or empty-state behavior.

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

Conciseness5/5

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

Two short sentences with no filler; the scope constraint and return content are front-loaded before the read-only note. Every phrase carries information.

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

Completeness4/5

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

With a single fully documented parameter and an output schema present, the description needs little else. Mentioning the returned fields is a bonus, and only ordering/pagination guidance is arguably missing.

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

Parameters3/5

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

Schema coverage is 100% (the guild_id snowflake pattern and description are fully documented), so the baseline is 3. The description adds no meaning beyond the schema about how guild_id constrains the template list.

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

Purpose4/5

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

The description names a specific verb (List) and resource (guild templates), and narrows the scope to templates this server created, which cleanly separates it from discord_architect_create_template and discord_architect_delete_template. It stops short of naming those siblings explicitly, so differentiation is inferential rather than stated.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this is the discovery step before creating, applying, or deleting templates. There is no explicit when-to-use, no prerequisites, and no mention of the sibling template tools by name.

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

discord_architect_planA
Read-only

Validate and normalise a server-structure plan without touching Discord. Takes a declarative plan (roles, categories, channels, permission intents) and returns the exact ordered steps that discord_architect_apply would execute, plus any problem in the plan (duplicate names, unknown role keys, unsupported field combinations). Read-only. This is the tool to call first for any 'build me a server' request: it is the cheapest way to show the user what would happen. The plan is declarative, not a script: re-applying it converges on the described state instead of duplicating entities.

NameRequiredDescriptionDefault
planYes

Output Schema

NameRequiredDescription
stepsYes
problemsYes
step_countYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true and openWorldHint=false; the description adds the non-redundant parts: no Discord state is touched, the output is the exact ordered steps apply would run plus every detected problem, and the plan is declarative/convergent so re-applying converges instead of duplicating. That convergence behaviour is exactly the kind of semantics annotations cannot express.

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

Conciseness4/5

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

Front-loaded with the action and the no-side-effects guarantee, then the return value, then usage routing, then the declarative contract. Efficient overall, though 'without touching Discord' and 'Read-only' restate the same fact.

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

Completeness4/5

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

Output schema exists, so return formatting needn't be spelled out, and annotations cover the safety profile. The description still supplies purpose, routing and idempotency semantics, which is sufficient. Only the omission of the top-level plan branches (theme/system_channels) keeps it from being fully complete.

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

Parameters3/5

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

The reported schema coverage is 0% at the top level (the single 'plan' parameter itself is undocumented), so the description has to carry meaning. It does characterise the shape well (roles, categories, channels, permission intents) and the role-key reference model, but it omits first-class branches such as theme, uncategorized and system_channels, leaving those to the nested schema descriptions.

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

Purpose5/5

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

States a specific verb pair (validate and normalise) on a specific resource (server-structure plan) with an explicit scope qualifier ('without touching Discord'). It also names the sibling it feeds (discord_architect_apply, which executes the returned steps), so an agent can separate the two without inspecting schemas.

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

Usage Guidelines5/5

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

Gives an explicit routing rule: 'the tool to call first for any "build me a server" request', plus the rationale (cheapest way to show the user what would happen). The alternative and its relationship are named rather than implied.

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

discord_architect_read_structureA
Read-only

Read the live server structure in the same shape a plan uses: categories with their channels, uncategorised channels, and roles. Use this to see what exists before building, or to hand the result back to a model that will propose a plan. Read-only.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
rolesYes
guild_idYes
categoriesYes
guild_nameYes
uncategorizedYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description reinforces 'Read-only' while adding useful context about the returned structure composition and its compatibility with planning. It does not discuss permission requirements or rate limits, but the output schema and read-only annotation carry much of that burden.

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

Conciseness5/5

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

Three compact sentences, front-loaded with the output shape and scope, followed by usage and the read-only property. Every sentence contributes information without repetition.

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

Completeness5/5

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

For a simple one-parameter read operation with an output schema and read-only annotations, the description supplies the purpose, conceptual return shape, and when to use it. Nothing critical for correct invocation is missing.

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

Parameters3/5

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

There is only one parameter, guild_id, and the schema description coverage is 100%, including the snowflake pattern and description. The description adds no parameter-level guidance beyond what the schema already provides, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb ('Read') and resource ('live server structure'), enumerates the returned components (categories, their channels, uncategorised channels, roles), and ties the output to the 'same shape a plan uses'. This distinguishes it from generic siblings like discord_list_channels and discord_list_roles by framing it as an architect/plan-compatible structure read.

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

Usage Guidelines4/5

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

Gives explicit use cases: 'see what exists before building' and 'hand the result back to a model that will propose a plan'. It does not name alternative tools or exclusions, but the context for when to invoke it is clear.

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

discord_architect_repairA
Idempotent

Resume an interrupted build: compares a plan against the live server and reports exactly which steps are still missing, then optionally applies just those. Use this after discord_architect_apply reports failures, or when a build was interrupted. PREVIEWS BY DEFAULT; confirm:true applies the missing steps only. Read-only when confirm is false.

NameRequiredDescriptionDefault
planYes
confirmNoSet true to create the missing steps.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
modeYes
failedYes
createdYes
missingYes

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: it discloses that the tool previews by default, that read-only behavior is conditional on confirm being false, and that only missing steps are applied (reinforcing destructiveHint=false and idempotentHint=true). This materially changes how an agent would call a tool whose readOnlyHint=false would otherwise suggest unconditional mutation.

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

Conciseness5/5

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

Four tight sentences in a deliberate order: what it does, when to use it, the default safety posture, then the override. No repetition of the title or schema details, and the safety-critical default is capitalized and front-loaded in its sentence.

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

Completeness5/5

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

An output schema exists, so return-shape explanation is unnecessary; the description covers the only behavioral unknowns an agent needs (preview default, confirm override, missing-steps-only scope). For a 3-parameter, nested-plan tool with strong schema coverage, nothing essential is missing.

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

Parameters4/5

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

The description gives real semantics for `confirm` ('confirm:true applies the missing steps only') and for `plan` (it is diffed against the live server), which the schema alone does not make explicit. `guild_id` is left to its schema description, which is adequate at 67% coverage.

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

Purpose4/5

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

States a specific verb and resource chain: compares a plan against the live server, reports missing steps, optionally applies them. It clearly positions itself as the repair path after discord_architect_apply, but never distinguishes itself from the closely named sibling discord_architect_compare, which also does a plan-vs-live comparison.

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

Usage Guidelines4/5

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

Explicit trigger conditions are given: 'Use this after discord_architect_apply reports failures, or when a build was interrupted.' For a fresh, non-interrupted build the agent can infer to use apply instead, but the overlap with discord_architect_compare is not addressed, leaving one real ambiguity unresolved.

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

discord_audit_permissionsA
Read-only

Generate a server-wide permission report: for every channel that has overwrites, lists each role/member and their allowed/denied permissions (entity names resolved). Read-only. Returns { channels: [...] } with channel, channelId, overwrites. Use discord_get_channel_permissions for a single channel.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
channelsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint true, and the description reinforces it with 'Read-only.' It adds meaningful behavioral context: only channels with overwrites are included, names are resolved, and the return shape is { channels: [...] } with channel, channelId, and overwrites. No annotation contradiction.

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

Conciseness5/5

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

Four short sentences, each earning its place: purpose/scope, read-only nature, return shape, and routing to the sibling tool. The key action is front-loaded, and there is no redundant filler.

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

Completeness5/5

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

For a read-only audit tool with one schema-documented parameter and an output schema, the description covers the essential behavior, return payload, and alternative usage. An agent has everything needed to invoke and interpret the result correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents guild_id. The description does not need to add parameter details; it simply aligns 'server-wide' with the guild scope. Baseline 3 is appropriate because the schema carries the semantic weight.

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

Purpose5/5

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

Opens with a specific verb and resource ('Generate a server-wide permission report') and precisely scopes its behavior to channels with overwrites, listing roles/members with allowed/denied permissions. This makes it clearly distinct from the many permission-related sibling tools.

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

Usage Guidelines5/5

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

Explicitly names the alternative tool for a narrower use case: 'Use discord_get_channel_permissions for a single channel.' It also implies when to choose this tool (server-wide audit) versus per-channel lookup, leaving no ambiguity.

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

discord_ban_memberA
DestructiveIdempotent

Ban a user from the server, blocking re-entry until unbanned. Optionally bulk-deletes their recent messages. Requires the Ban Members permission, and the bot's top role must outrank the target's. Use discord_unban_member to reverse, or discord_kick_member for a non-permanent removal. The reason is recorded in the audit log.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the server audit log.
user_idYesDiscord user ID (snowflake) of the user to ban.
guild_idYesDiscord server (guild) ID (snowflake).
delete_message_daysNoAlso delete the user's messages from the last N days (0–7). Default 0 (delete nothing).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark destructiveHint=true and readOnlyHint=false, and the description adds exactly the kind of context the rubric asks for: what gets destroyed (recent messages via bulk-delete), the auth/permission requirement, the role-hierarchy constraint, and the audit-log side effect. Everything disclosed is consistent with the annotations; idempotentHint=true aligns with the 'blocking re-entry' state model. No contradiction.

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

Conciseness5/5

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

Four sentences, each earning its place: core purpose and permanence, optional destructive behavior, prerequisites plus sibling routing, and the audit-log side effect. The most decision-relevant information is front-loaded before alternatives and side effects, with zero filler.

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

Completeness5/5

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

For a mutation tool with 100% schema coverage, annotations carrying the safety profile, and no output schema, nothing essential is missing. An agent knows what the operation does, what it destroys, what permissions are needed, how to reverse it, and the non-permanent alternative — all required to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (reason, user_id, guild_id, delete_message_days) is already fully documented in the schema. The description loosely ties 'bulk-deletes their recent messages' to delete_message_days and 'audit log' to reason, but it adds no new semantic detail beyond what the schema provides. The baseline 3 for high coverage is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource — 'Ban a user from the server' — and adds the defining effect, 'blocking re-entry until unbanned.' It also distinguishes itself from nearby siblings by name (discord_unban_member, discord_kick_member), so an agent can differentiate the operation without opening any schema.

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

Usage Guidelines5/5

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

The description explicitly routes to alternatives: 'Use discord_unban_member to reverse, or discord_kick_member for a non-permanent removal.' It also states the hard prerequisites upfront — 'Requires the Ban Members permission, and the bot's top role must outrank the target's' — leaving no ambiguity about when this tool is applicable.

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

discord_bulk_banA
Destructive

Ban many users in a single call, intended for raid mitigation. SAFE BY DEFAULT: dry_run is true unless explicitly set to false, so call it first to preview the exact list of user IDs that would be banned, then re-call with dry_run:false to actually ban them. Requires both the Ban Members and Manage Server permissions. Returns counts of banned vs failed users; Discord rejects the whole call with an error if no user could be banned. Use discord_ban_member for a single ban with finer control.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the server audit log.
dry_runNoIf true (default), only returns the user IDs that would be banned without banning anyone. Set false to actually ban.
guild_idYesDiscord server (guild) ID (snowflake).
user_idsYesArray of user IDs (snowflakes) to ban (max 200 per call, a Discord API limit).
delete_message_secondsNoAlso delete each user's messages from the last N seconds (0–604800, i.e. up to 7 days). Default 0.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the description's safety warning reinforces rather than repeats it. The description adds valuable behavioral details: dry_run defaults to true for safe preview, requires Ban Members and Manage Server permissions, returns counts of banned vs failed users, and fails wholesale with an error if no user can be banned. This goes beyond what the annotations provide, though it doesn't specify the exact error shape or response format.

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

Conciseness5/5

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

Four sentences, all information-dense with no filler. The critical safety instruction (dry_run default) is front-loaded, followed by permissions, return values, and the sibling comparison. Every sentence earns its place.

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

Completeness5/5

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

This is a destructive bulk operation, and the description covers prerequisites (permissions), safety workflow (dry-run), behavior (counts, wholesale failure), and routing (sibling tool for single bans). The output schema is absent, but the description's mention of returned counts and error behavior compensates enough. The 200-user max and delete_message_seconds bounds are already in the schema. Nothing critical is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all five parameters thoroughly. The description adds cross-parameter context: it explains the safe-by-default workflow tying dry_run to the overall call behavior, and mentions the 200-user API limit context. It doesn't add per-parameter details beyond the schema, but it highlights the most important behavioral parameter (dry_run) and the safety implications.

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

Purpose5/5

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

States a specific verb ('Ban') and resource ('many users in a single call'), with an explicit intended use case ('raid mitigation'). It distinguishes itself from discord_ban_member by naming the sibling and the condition for choosing it (single ban with finer control).

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: use for raid mitigation and bulk banning; use discord_ban_member for a single ban with finer control. It also gives a clear workflow: call with dry_run first to preview, then re-call with dry_run:false. This is actionable routing for an agent.

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

discord_bulk_delete_messagesA
Destructive

Permanently delete multiple recent messages in one call. IRREVERSIBLE. SAFE BY DEFAULT: dry_run is true unless explicitly set to false, so call it first to preview, then re-call with dry_run:false to actually delete. Discord only allows bulk-deleting messages younger than 14 days; older ones are skipped. Requires the Manage Messages permission. Returns the number deleted.

NameRequiredDescriptionDefault
countYesNumber of recent messages to delete (2–100).
dry_runNoIf true (default), only reports how many would be deleted without deleting. Set false to actually delete.
channel_idYesID (snowflake) of the channel or thread to delete messages from.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the destructiveHint=true annotation by disclosing irreversibility, the dry_run safe-by-default behavior, the 14-day Discord restriction, the required Manage Messages permission, and the return value. This gives an agent a complete behavioral picture before invoking 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.

Conciseness5/5

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

Four compact sentences, each carrying unique essential information: purpose, irreversibility, safe dry_run workflow, platform constraint, permission, and return value. No filler or repetition.

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

Completeness5/5

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

For a destructive multi-parameter tool with no output schema, this description is complete: it covers prerequisites, constraints, safety workflow, side effects, and outcome. An agent has everything needed to invoke it correctly and avoid accidental deletion.

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

Parameters3/5

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

Schema coverage is 100%, and the description mostly reinforces the dry_run behavior already documented in the schema. It adds a useful preview-then-delete workflow, but does not substantially redefine or extend the parameter meanings beyond what the schema already provides.

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

Purpose5/5

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

States a specific action, resource, and scope: 'Permanently delete multiple recent messages in one call.' This clearly distinguishes it from single-message deletion tools like discord_delete_message and other message operations.

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

Usage Guidelines4/5

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

Provides clear contextual guidance: use for bulk deletion of recent messages, respect the 14-day Discord limit, and run with dry_run first to preview before actual deletion. It does not explicitly name the alternative single-delete tool or state 'do not use for one message,' but the context is strong enough for an agent to choose correctly.

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

discord_cancel_scheduled_taskA
Idempotent

Cancel a scheduled message by its task ID. The message will not be sent again. Returns whether the task existed. Only affects tasks created in this server process; a durable external scheduler is not reachable from here.

NameRequiredDescriptionDefault
task_idYesTask ID returned by discord_schedule_message.

Output Schema

NameRequiredDescription
task_idYes
cancelledYes

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the annotations (idempotentHint=true, destructiveHint=false, openWorldHint=false), the description discloses that the message will not be sent again, that the result reports whether the task existed, and that only in-process tasks are affected. Those scope and outcome details are exactly what an agent needs before calling a cancel operation; it does not contradict any annotation.

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

Conciseness5/5

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

Four short sentences, front-loaded with the action and effect, then the return semantics, then the scope limitation. Every sentence carries distinct information with no filler.

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

Completeness5/5

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

Single required parameter, output schema present, and annotations covering the safety profile. The description still adds the non-obvious in-process scope caveat and the existence-check return behavior, which is more than enough for correct invocation.

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

Parameters3/5

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

Schema coverage is 100% and the task_id property already documents its origin ('Task ID returned by discord_schedule_message'), so the description adds no format or edge-case detail beyond restating 'by its task ID'. Baseline 3 is appropriate when the schema carries the semantics.

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

Purpose5/5

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

States a specific verb and resource ('Cancel a scheduled message by its task ID') and names the exact identifier used, which cleanly separates it from discord_schedule_message and discord_list_scheduled_tasks. An agent can identify the operation 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.

Usage Guidelines4/5

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

The scope note ('Only affects tasks created in this server process; a durable external scheduler is not reachable from here') is an effective when-not constraint that prevents wasted calls, and the parameter points back to discord_schedule_message as the source of the ID. It stops short of explicitly naming the sibling to use for other scheduler types, so not a 5.

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

discord_check_tool_permissionsA
Read-only

Given a guild and a list of tool names, report for each whether the bot currently holds the permissions that tool needs, and whether the target channel is visible to it. Read-only. Use this before a multi-step operation to fail early with an actionable message instead of partway through.

NameRequiredDescriptionDefault
toolsYesTool names to check, e.g. ['discord_create_channel', 'discord_ban_member'].
guild_idYesDiscord server (guild) ID (snowflake).
channel_idNoOptional channel to also check visibility in.

Output Schema

NameRequiredDescription
resultsYes
summaryYes
guild_idYes
channel_visibleYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so "Read-only" is redundant, but the description adds real behavioral context: a per-tool verdict is returned and channel visibility is checked alongside permissions. The fail-early framing explains the intended contract. No rate-limit or error-shape detail, but the output schema covers returns.

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

Conciseness4/5

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

Front-loaded with the core behavior, followed by two short clauses on read-only and timing. Efficient overall, with only the redundant "Read-only." sentence not earning its place against the annotations.

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

Completeness5/5

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

For a read-only preflight check with fully documented params and an output schema, the description covers what is checked, on what scope, and when to call it. Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% and all three parameters carry descriptions, so the schema does the heavy lifting. The description mirrors the parameters (guild, tool names, target channel) without adding format or semantics beyond them, which is the baseline case.

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

Purpose4/5

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

States a specific verb and resource: for a guild plus a list of tool names, report per-tool whether the bot holds the needed permissions and whether the channel is visible. That is clearly distinct from channel-wide or bot-wide permission siblings, 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.

Usage Guidelines4/5

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

"Use this before a multi-step operation to fail early with an actionable message instead of partway through" gives a concrete trigger condition. It doesn't state when not to use it or point at alternatives like discord_get_channel_permissions or discord_get_bot_permissions.

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

discord_clone_channelA

Create a copy of a channel, including its name, topic, and permission overwrites (but not its messages). Requires the Manage Channels permission. Returns the cloned channel's name and ID.

NameRequiredDescriptionDefault
new_nameNoOptional name for the clone. Defaults to the source channel's name.
channel_idYesID (snowflake) of the channel to clone.

TDQS

A4.4/5.0
Behavior5/5

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

The description adds meaningful behavioral context beyond the annotations: the permission requirement, the returned payload (cloned channel's name and ID), and the precise copy scope including the explicit non-copying of messages. This supplements rather than contradicts the annotations — readOnlyHint=false aligns with creating, destructiveHint=false aligns with a non-destructive clone.

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

Conciseness5/5

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

Three concise sentences deliver action, scope, prerequisite, and return value with zero filler. The action and scope are front-loaded, and every sentence earns its place.

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

Completeness4/5

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

With no output schema present, the explicit return value statement is a necessity and is provided. The only notable gap is that the description is silent on whether the clone preserves the source channel's type or category placement, which an agent might reasonably assume; this is a minor ambiguity for an otherwise well-covered tool.

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

Parameters3/5

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

Schema coverage is 100%: both channel_id and new_name are already documented in the schema, including the default behavior of new_name. The description's mention of "name" in the copied scope loosely ties to new_name, but this is a marginal addition beyond what the schema already conveys, so the baseline of 3 applies.

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

Purpose5/5

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

"Create a copy of a channel" states a specific verb and resource, and the description goes further by enumerating exactly what is included (name, topic, permission overwrites) and excluded (messages). This scope precision clearly differentiates it from siblings like discord_create_channel (new empty channel) and discord_copy_permissions (permissions only).

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

Usage Guidelines4/5

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

The description gives clear applicability context: the Manage Channels permission prerequisite and the explicit "but not its messages" boundary, which tells an agent when this tool will not satisfy a request (e.g., if message history must be duplicated). However, it never names alternative tools such as discord_create_channel or discord_copy_permissions, so when-not guidance remains implied rather than explicit.

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

discord_compare_structureA
Read-only

Diff a structure backup against the live server and report what changed: channels and categories present in one but not the other, roles added or removed, and permission overwrites that differ. Read-only. Use this to answer 'what changed since the backup?' or to check drift before restoring.

NameRequiredDescriptionDefault
backupYes
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
summaryYes
roles_only_in_backupYes
roles_only_on_serverYes
permission_differencesYes
channels_only_in_backupYes
channels_only_on_serverYes
categories_only_in_backupYes
categories_only_on_serverYes

TDQS

A4/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, and the description confirms read-only plus discloses exactly what the diff surfaces (presence deltas, role deltas, permission overwrite deltas). It does not cover behavioral edges the agent would want, such as what happens if guild_id does not match backup.guild_id, or whether required bot intents/permissions affect the comparison. Useful added context, but not complete.

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

Conciseness5/5

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

Three short sentences: purpose and scope first, then the safety note, then the usage trigger. Nothing redundant and no filler.

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

Completeness4/5

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

With an output schema present, the description need not explain the diff response shape, and it correctly avoids doing so. For a tool taking a deeply nested backup object, the remaining gap is provenance/validation of that object, which the description leaves implicit.

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

Parameters3/5

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

Schema description coverage is only 50%: guild_id is documented in the schema, but the large nested 'backup' object is undocumented there, and the description only calls it 'a structure backup'. It never states the backup must carry format 'discord-mcp-ultimate/structure-backup@1' (typically produced by discord_export_structure) or whether the passed guild_id must match the backup's guild_id. It adds framing but 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.

Purpose4/5

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

States a precise verb and comparison ('Diff a structure backup against the live server') and enumerates the exact classes of change reported: channels/categories present in one but not the other, roles added or removed, permission overwrites that differ. That is well beyond tautology. It stops short of a 5 because it never differentiates itself from the near-identical sibling discord_architect_compare, leaving the agent to guess which comparison tool to pick.

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

Usage Guidelines4/5

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

Gives concrete when-to-use triggers: answering 'what changed since the backup?' and checking drift before restoring. That is clear situational context. No explicit when-not-use case or named alternative (e.g. 'use discord_read_structure to inspect without a backup'), so it falls short of a 5.

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

discord_copy_permissionsA
DestructiveIdempotent

Replace the target channel's permission overwrites with a copy of the source channel's. The target's existing overwrites are overwritten. Requires the Manage Roles permission. Returns a confirmation.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the server audit log.
source_channel_idYesID (snowflake) of the channel to copy overwrites from.
target_channel_idYesID (snowflake) of the channel whose overwrites will be replaced.

TDQS

A4/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, but the description adds valuable specifics beyond them: exactly what gets destroyed ('The target's existing overwrites are overwritten'), the required permission, and the return behavior ('Returns a confirmation'). This is useful context the structured annotations cannot convey, and 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.

Conciseness5/5

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

Three tight sentences, each earning its place: the core operation, the destructive consequence, and the permission/return note. The most decision-critical information is front-loaded, with zero filler or repetition of schema content.

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

Completeness4/5

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

For a 3-parameter tool with full schema coverage and no output schema, the description covers the essential operational context: what is copied, what is overwritten, the permission gate, and the return value. Minor gaps remain — e.g., behavior when source and target are in different guilds or are different channel types — but these are edge cases beyond the core call contract.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents all three parameters including the reason audit-log field and both snowflake IDs. The tool description adds no parameter-level information beyond the schema, which is the baseline-3 case.

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

Purpose5/5

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

The description uses a specific verb ('Replace'), names the resource (target channel's permission overwrites), and specifies the source ('a copy of the source channel's'). It is immediately distinguishable from siblings like discord_lock_channel_permissions or discord_reset_channel_permissions because the direction, source, and target are all explicit.

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

Usage Guidelines3/5

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

The operation semantics make the use case clear — make one channel's permissions match another's — and the Manage Roles prerequisite is stated. However, no alternatives are named or excluded; an agent choosing among overlapping siblings such as discord_clone_channel, discord_set_role_permission, or discord_reset_channel_permissions gets no guidance on when this tool is preferred over those.

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

discord_create_automod_ruleA

Create an AutoMod rule. Requires Manage Server (Discord gates AutoMod on it) and the server to have the AutoModeration feature, which arrives with Community. Trigger types: 'keyword' (keyword_filter + optional regex_patterns), 'keyword_preset' (Discord's built-in profanity/sexual_content/slurs lists), 'spam', 'mention_spam' (mention_total_limit), 'member_profile' (blocks suspicious profile text). Actions: block_message, send_alert_message (needs channel_id), timeout (needs duration_seconds), block_member_interaction. Returns the created rule.

NameRequiredDescriptionDefault
nameYesRule name shown in Server Settings.
reasonNoOptional reason recorded in the audit log.
actionsYesActions to take on a match.
enabledNoWhether the rule is active on creation.
presetsNoDiscord's built-in keyword lists (keyword_preset trigger).
guild_idYesDiscord server (guild) ID (snowflake).
keywordsNoKeywords to match (keyword trigger). Max 1000, each up to 60 characters.
allow_listNoWords that are exempt from the keyword filter. Max 100.
event_typeNoWhich gateway event the rule watches.message_send
trigger_typeYesWhat triggers the rule.
regex_patternsNoRegular expressions to match (keyword trigger). Max 10.
exempt_role_idsNoRoles exempt from the rule.
exempt_channel_idsNoChannels exempt from the rule.
mention_total_limitNoUnique mentions allowed per message before the rule fires (mention_spam trigger).
mention_raid_protectionNoAlso block messages that mention a role or exceed the limit.

Output Schema

NameRequiredDescription
idYes
nameYes
actionsYes
enabledYes
presetsYes
keywordsYes
allow_listYes
creator_idYes
event_typeYes
trigger_typeYes
regex_patternsYes
exempt_role_idsYes
exempt_channel_idsYes
mention_total_limitYes
mention_raid_protectionYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already state that this is a non-read-only, non-idempotent, non-destructive write. The description adds meaningful behavioral context: the permission gate, feature availability requirement, trigger-type meanings, action requirements, and that the created rule is returned.

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

Conciseness5/5

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

The description is dense but front-loaded and every sentence carries useful information. It covers permissions, trigger types, action requirements, and return behavior without filler.

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

Completeness5/5

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

For a complex 15-parameter tool with full schema descriptions and an output schema, the description supplies enough high-level context to call it correctly. It does not need to restate every schema-level parameter constraint.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3. The description adds useful cross-parameter guidance: keyword triggers pair with keyword_filter/regex_patterns, mention_spam uses mention_total_limit, send_alert_message needs channel_id, and timeout needs duration_seconds.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Create an AutoMod rule.' This clearly distinguishes it from sibling tools such as discord_edit_automod_rule and discord_delete_automod_rule.

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

Usage Guidelines4/5

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

It gives important usage preconditions: Manage Server permission and the AutoModeration/Community feature. It does not explicitly name edit/list/delete alternatives, but the create context is clear.

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

discord_create_channelA

Create a text channel, voice channel, or category in a server. Requires the Manage Channels permission. For forum channels use discord_create_forum_channel instead. Returns the new channel's name and ID.

NameRequiredDescriptionDefault
nameYesName of the new channel (max 100 characters).
typeNoChannel type to create. Defaults to 'text'.
topicNoOptional channel topic/description. Applies to text channels only.
guild_idYesDiscord server (guild) ID (snowflake) to create the channel in.
category_idNoOptional category (snowflake) to nest the new channel under.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish this is a write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds valuable context beyond that: the auth requirement (Manage Channels permission) and the return payload ('Returns the new channel's name and ID'), which is especially useful since no output schema exists. It doesn't cover failure modes like duplicate-name conflicts, but the added context is solid.

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

Conciseness5/5

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

Three sentences with no filler: purpose, permission prerequisite, sibling routing, and return value. Every sentence earns its place, and the most decision-relevant information (what it creates and where it doesn't apply) is front-loaded.

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

Completeness4/5

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

For a moderate-complexity tool with five params, a full schema, and no output schema, the description covers the essentials: scope, permission, alternative routing, and return format. It slightly under-specifies error conditions and duplicate-name handling, but nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents all five parameters including defaults and constraints. The description reinforces the 'type' enum values (text, voice, category) but adds no new parameter-level information, which aligns with the baseline-3 rule for high schema coverage.

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

Purpose5/5

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

The description uses a specific verb + resource ('Create a text channel, voice channel, or category in a server') and clearly enumerates the supported channel types, which separates it from the generic title 'Create channel'. It also explicitly distinguishes itself from discord_create_forum_channel by name, so an agent can disambiguate without opening any schema.

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

Usage Guidelines5/5

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

The description gives an explicit prerequisite ('Requires the Manage Channels permission'), an explicit exclusion ('For forum channels use discord_create_forum_channel instead'), and names the exact alternative tool. This covers when-to-use, when-not-to-use, and the alternative all in one sentence.

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

discord_create_emojiA

Upload a new custom emoji to the server. The name must be 2–32 characters using only letters, digits and underscores (Discord's rule). Accepts an https URL, data: URI or base64 image: PNG, JPEG, GIF or WebP, up to 256 KB for emojis. Requires Manage Expressions. Discord also caps the total number of emojis by boost tier, and rejects the upload with a clear error once the cap is reached. Returns the created emoji.

NameRequiredDescriptionDefault
nameYesEmoji name, e.g. 'pepe_happy'. This is the text used in :name:.
imageYesAn image as an https URL, a data:image/png;base64,... URI, or a bare base64 string (PNG, JPEG, GIF or WebP, max 10 MB).
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).
role_idsNoRestrict the emoji to these roles. Omit for everyone.

Output Schema

NameRequiredDescription
idYes
urlYes
nameYes
managedYes
animatedYes
role_idsYes
author_idYes
availableYes

TDQS

A4.4/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false), the description discloses the permission gate, a server-wide quota tied to boost tier, the failure mode ('rejects the upload with a clear error once the cap is reached'), and accepted image forms and size limit. That is exactly the operational context annotations cannot carry.

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

Conciseness5/5

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

Front-loaded with the action, then constraints in roughly the order the agent will hit them (name rule, image input, permission, quota). Four sentences, no preamble, and the closing 'Returns the created emoji' is the only mild redundancy given an output schema exists.

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

Completeness4/5

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

For a mutating tool with a rich schema, output schema and annotations, the description covers permissions, quota, input formats and failure behavior, which is most of what an agent needs. The gaps are the undisclosed role_ids restriction (a real behavioral choice about who can use the emoji) and the 256 KB vs 10 MB size discrepancy that should be reconciled.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; the description restates the name rule and the image format options but adds no new semantics. It also never mentions role_ids (scoping the emoji to roles) or reason (audit log), and its '256 KB' limit conflicts with the schema's 'max 10 MB', leaving the agent with two different size ceilings.

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

Purpose5/5

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

Opens with a specific verb and resource: 'Upload a new custom emoji to the server.' The word 'new' plus the resource 'emoji' cleanly separates it from discord_edit_emoji, discord_delete_emoji and the parallel discord_create_sticker (different resource), so an agent can pick it 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.

Usage Guidelines4/5

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

It gives usable preconditions ('Requires Manage Expressions', boost-tier emoji cap with a clear error) which tell the agent whether the call can succeed. It stops short of naming alternatives (e.g., discord_list_emojis to check the current count/cap, discord_edit_emoji for modifications), so routing guidance is inferred rather than explicit.

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

discord_create_event_inviteA

Create a shareable invite URL that points to a scheduled event, so recipients land on the event when joining. Requires the Create Instant Invite permission. Returns the invite URL.

NameRequiredDescriptionDefault
max_ageNoInvite lifetime in seconds, 0–604800 (7 days); 0 means it never expires. Default 86400 (24h).
event_idYesID (snowflake) of the scheduled event to link the invite to.
guild_idYesDiscord server (guild) ID (snowflake).
max_usesNoMaximum number of uses, 0–100; 0 means unlimited. Default 0.
channel_idNoChannel (snowflake) the invite points to. Defaults to the event's own channel; REQUIRED for EXTERNAL events, which have none.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate this is a non-read-only, non-destructive, non-idempotent action. The description adds useful context beyond that by disclosing the permission requirement ('Requires the Create Instant Invite permission') and stating the output ('Returns the invite URL'). It does not cover failure or rate-limit behaviors, but the added auth prerequisite is valuable.

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

Conciseness5/5

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

The description is two sentences with no filler. The primary action and outcome are front-loaded, and the permission requirement and return value are stated without redundancy.

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

Completeness5/5

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

For a tool with well-documented parameters and no output schema, the description covers the key missing pieces: the permission needed, the invite's purpose, and the return value. The agent has enough to select and invoke this tool correctly without additional context from sibling descriptions.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all five parameters, including defaults, ranges, and special cases such as channel_id being required for external events. The description adds no additional parameter-level detail, which matches the baseline expectation of 3 for high schema coverage.

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

Purpose5/5

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

The description states a specific verb ('Create'), a specific resource ('shareable invite URL'), and a distinct target ('points to a scheduled event'). This clearly separates it from the sibling discord_create_invite, whose scope is a regular channel invite. The phrase 'so recipients land on the event when joining' further sharpens the purpose.

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

Usage Guidelines3/5

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

The description implies the use case by explaining that the invite points to a scheduled event and mentions the required 'Create Instant Invite' permission. However, it does not explicitly contrast this with discord_create_invite or state when a regular invite should be used instead, so usage guidance is inferred rather than explicit.

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

discord_create_forum_channelA

Create a new forum channel in a server. A forum holds posts (threads) rather than a linear message feed. Requires the Manage Channels permission. Use discord_create_channel for text/voice channels instead. Returns the new channel's name and ID.

NameRequiredDescriptionDefault
nameYesName of the new forum channel (max 100 characters).
topicNoGuidelines/topic text shown at the top of the forum.
guild_idYesDiscord server (guild) ID (snowflake).
category_idNoOptional category (snowflake) to nest the forum under.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations convey only readOnly=false, idempotent=false, destructive=false; the description adds beyond this by disclosing the authorization requirement ('Requires the Manage Channels permission') and the return payload ('Returns the new channel's name and ID'), which is valuable since there is no output schema. It does not cover failure behavior or rate limits, but the added context meaningfully exceeds 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.

Conciseness5/5

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

Five short sentences, each earning its place: purpose, concept, permission prerequisite, sibling alternative, and return value. The core action is front-loaded and there is zero filler or redundancy.

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

Completeness4/5

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

For a create operation with no output schema, the description provides the full picture: purpose, conceptual model, permission requirement, sibling routing, and return value, while the schema documents every parameter. Only minor details such as duplicate-creation behavior or rate limits are unmentioned, but annotations already signal non-idempotence.

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

Parameters3/5

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

Schema description coverage is 100%, so name, topic, guild_id, and category_id are each already documented. The description adds no parameter-level guidance, but the baseline of 3 applies when the schema carries the full burden; no compensation is needed.

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

Purpose5/5

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

States a specific action and resource — 'Create a new forum channel in a server' — and clarifies the concept: 'A forum holds posts (threads) rather than a linear message feed.' It also names the sibling it is not (discord_create_channel for text/voice channels), so an agent can distinguish the tools without opening schemas.

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

Usage Guidelines5/5

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

Explicitly routes selection: 'Use discord_create_channel for text/voice channels instead,' and the forum-vs-linear-feed distinction defines the condition that selects this tool. The 'Requires the Manage Channels permission' prerequisite also tells the agent when the call is authorized. No inference is required.

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

discord_create_forum_postA

Create a new post (a thread with a starter message) in a forum channel. Requires the Send Messages and Create Public Threads permissions. Use discord_reply_to_forum to add follow-up messages. Returns the new post's name and thread ID.

NameRequiredDescriptionDefault
titleYesTitle of the post, used as the thread name (max 100 characters).
contentYesBody of the post's starter message (max 2000 characters).
applied_tagsNoOptional tag IDs to apply. Get valid IDs from discord_get_forum_tags.
forum_channel_idYesID (snowflake) of the forum channel to post in.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish this as a write, non-idempotent, non-destructive operation. The description adds value beyond that by disclosing required permissions, the return payload (post name and thread ID), and the thread-plus-starter-message structure. It does not contradict any annotation, but failure behavior is not addressed, preventing 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.

Conciseness5/5

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

Four short sentences, each carrying distinct value: purpose, prerequisites, alternative routing, and return value. The core action is front-loaded and there is zero filler or repetition of schema content.

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

Completeness4/5

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

Since no output schema exists, the description correctly takes responsibility for disclosing the return value (post name and thread ID), and it covers prerequisites and the most relevant sibling. Remaining gaps are minor — failure modes and invalid tag handling are not mentioned — but for a 4-parameter write tool this is largely complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline of 3 applies. The description adds no parameter-level detail beyond what the schema already documents — for example, title-as-thread-name and content-as-starter-message are both already stated in the schema property descriptions.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Create a new post (a thread with a starter message) in a forum channel.' The parenthetical clarifies that a forum post is a thread plus a starter message, distinguishing this tool from discord_send_message and discord_create_thread without needing to inspect either schema.

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

Usage Guidelines5/5

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

Explicitly names the sibling alternative and the condition that selects it: 'Use discord_reply_to_forum to add follow-up messages,' which tells the agent when NOT to use this tool. It also states the prerequisite permissions (Send Messages and Create Public Threads) that gate invocation.

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

discord_create_inviteA

Create an invite link for a channel, optionally limiting its lifetime, uses, and membership type. SECURITY: anyone with the returned link can join the server. Requires the Create Instant Invite permission. Returns the invite URL and code.

NameRequiredDescriptionDefault
uniqueNoIf true, always mint a fresh invite instead of reusing an equivalent existing one. Default false.
max_ageNoInvite lifetime in seconds, 0–604800 (7 days); 0 means it never expires. Default 86400 (24h).
max_usesNoMaximum number of uses, 0–100; 0 means unlimited. Default 0.
temporaryNoIf true, members who join via this invite are removed when they disconnect (unless they get a role). Default false.
channel_idYesID (snowflake) of the channel the invite leads to.

TDQS

A4.5/5.0
Behavior5/5

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

The description adds valuable behavioral context beyond the annotations: a security warning that anyone with the returned link can join the server, the required 'Create Instant Invite' permission, and the return payload. This goes well beyond the readOnlyHint/idempotentHint/destructiveHint flags and helps the agent anticipate side effects and failure conditions.

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

Conciseness5/5

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

Three sentences with no filler: purpose, security caveat, permission requirement, and return value are all stated efficiently. Important warnings are front-loaded and every sentence adds information an agent needs.

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

Completeness5/5

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

Despite having no output schema, the description covers the tool's purpose, key behavior, permission requirement, security implications, and return values. The remaining parameter details are fully documented in the input schema, so nothing essential is missing for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains each parameter thoroughly. The description's summary of 'lifetime, uses, and membership type' maps loosely to max_age, max_uses, and temporary, but adds no extra detail beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Create an invite link for a channel.' It clearly names the optional customization dimensions (lifetime, uses, membership type) and states what is returned (URL and code). This is enough to distinguish it from sibling tools like discord_create_event_invite.

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

Usage Guidelines4/5

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

The description communicates the clear context: invites are created for a channel, and the optional parameters control lifetime, uses, and membership type. It does not explicitly mention alternatives or say when not to use this tool, but the channel-focused wording implicitly separates it from event invites and DM tools.

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

discord_create_reaction_role_menuA

Attach one or more emoji→role mappings to a message so members self-assign roles by reacting. Posts a menu embed, adds each reaction, and records the mappings the bot process reads. The bot must be running (npm run bot) for reactions to be honoured: this tool only writes the configuration. Roles at or above the bot's highest role are refused before anything is posted, because Discord would reject the grant anyway.

NameRequiredDescriptionDefault
titleYesEmbed title.
reasonNo
entriesYesEmoji→role pairs. Discord allows up to 20 reactions per message.
guild_idYesDiscord server (guild) ID (snowflake).
channel_idYesChannel the menu is posted in.
descriptionNoEmbed body, e.g. how to use the menu.

Output Schema

NameRequiredDescription
mappingsYes
warningsYes
channel_idYes
message_idYes

TDQS

A4.4/5.0
Behavior5/5

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

With only a title annotation, the description carries the full behavioral burden and does so well: it discloses the multi-step side effects (embed post, reaction adds, config write), the runtime dependency on the bot process, and the pre-flight role-hierarchy rejection before anything is posted. That is exactly the kind of context annotations would otherwise provide.

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

Conciseness5/5

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

Three sentences, front-loaded with the core action and effects, followed by the operational prerequisite and the failure boundary. No filler; every sentence contributes.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and the description covers the mutation's key behavioral facts. It stops short of saying what happens on partial failure or whether existing mappings/menus on the message are preserved, which would matter for a config-writing tool.

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

Parameters3/5

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

Schema coverage is 83%, so the schema already documents title, entries, emoji, label, description, and IDs. The description reinforces 'one or more emoji→role mappings' and ties the role-hierarchy rejection to role_id, but adds no syntax or format detail beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource: 'Attach one or more emoji→role mappings to a message so members self-assign roles by reacting', then enumerates the concrete side effects (posts embed, adds reactions, records mappings). This clearly separates it from siblings like discord_add_reaction (single reaction) and discord_list/delete_reaction_role_menu.

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

Usage Guidelines4/5

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

Gives a strong operational prerequisite: the bot must be running via `npm run bot`, and clarifies the tool only writes configuration. It also states a refusal boundary (roles at or above the bot's highest role are rejected). It does not explicitly name sibling alternatives such as discord_add_reaction or discord_delete_reaction_role_menu, so it falls short of a 5.

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

discord_create_roleA

Create a new role in a server. Requires the Manage Roles permission; the new role is placed below the bot's highest role. Use discord_add_role to then assign it to members. Returns the new role's name and ID.

NameRequiredDescriptionDefault
nameYesName of the new role (max 100 characters).
colorNoRole color as a hex string, e.g. '#FF5733'.
hoistNoIf true, display members with this role separately in the member list.
guild_idYesDiscord server (guild) ID (snowflake).
mentionableNoIf true, anyone can @mention this role.
permissionsNoServer-wide permission flag names to grant, e.g. ['SendMessages','ViewChannel']. Uses Discord PermissionsBitField flag names.

TDQS

A4.2/5.0
Behavior4/5

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

Goes beyond the annotations by disclosing that the new role is placed below the bot's highest role and that the response returns the role's name and ID. Given there is no output schema, the return-value disclosure is especially useful.

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

Conciseness5/5

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

Three dense sentences with no filler: the first states the action, the second covers permissions and placement, and the third provides follow-up routing and return information. Every sentence earns its place.

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

Completeness4/5

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

Provides the core operational constraints, permission requirement, follow-up step, and expected return value. It does not cover duplicate-role behavior or error cases, but the schema and annotations cover the rest sufficiently for a create operation.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters are already documented. The description adds no parameter-level meaning beyond listing the mandatory ones, which is adequate but not exceptional.

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

Purpose5/5

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

States a specific verb and resource: 'Create a new role in a server.' It clearly distinguishes itself from sibling tools like discord_edit_role, discord_delete_role, and discord_add_role.

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

Usage Guidelines4/5

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

Explicitly names the Manage Roles permission prerequisite and directs the agent to use discord_add_role for assigning the role afterward. It lacks an explicit 'do not use when' statement, but the context is clear enough for selection.

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

discord_create_scheduled_eventA

Create a scheduled event. For 'VOICE'/'STAGE_INSTANCE' events provide channel_id; for 'EXTERNAL' events provide location AND scheduled_end_time. Requires the Manage Events permission. Returns the new event's name and ID.

NameRequiredDescriptionDefault
nameYesEvent name (max 100 characters).
imageNoOptional cover image URL.
guild_idYesDiscord server (guild) ID (snowflake).
locationNoFree-text location (e.g. a URL or place). Required for EXTERNAL events.
channel_idNoVoice or stage channel ID (snowflake). Required for VOICE/STAGE_INSTANCE events.
descriptionNoOptional event description (max 1000 characters).
entity_typeYesWhere the event happens: 'VOICE' or 'STAGE_INSTANCE' (needs channel_id), or 'EXTERNAL' (needs location + scheduled_end_time).
scheduled_end_timeNoEvent end as an ISO 8601 datetime. Required for EXTERNAL events.
scheduled_start_timeYesEvent start as an ISO 8601 datetime, e.g. '2026-06-01T20:00:00Z'. Must be in the future.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-destructive, non-idempotent, open-world write. The description adds meaningful context beyond that: the Manage Events permission requirement and the shape of the return (new event's name and ID). It doesn't discuss duplicate-event behavior or what happens on permission failure, which keeps it below 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.

Conciseness5/5

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

Three sentences, no filler: action, conditional requirements, permission + return shape. The most decision-relevant information is front-loaded.

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

Completeness4/5

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

No output schema exists, and the description compensates by naming the return fields. It covers the entity-type branching, permissions, and result. Minor gaps: no note on optional image/description fields or rate limits, though the schema handles the former.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter, including the entity_type enum itself stating the same channel_id / location + scheduled_end_time conditions. The description restates that cross-field requirement in one place, which is mildly useful but largely duplicative of structured data.

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

Purpose4/5

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

Opens with a specific verb+resource ('Create a scheduled event'), which cleanly separates it from the list/get/edit/delete scheduled-event siblings. It doesn't explicitly name those siblings, but the create semantics are unambiguous.

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

Usage Guidelines4/5

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

Gives clear conditional guidance tied to entity_type: channel_id for VOICE/STAGE_INSTANCE, location + scheduled_end_time for EXTERNAL. No explicit 'use X instead' routing against siblings, so it stops short of a 5, but the context is actionable.

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

discord_create_stickerA

Upload a custom sticker to the server. Discord accepts PNG, APNG and Lottie (JSON) stickers here; GIF stickers are not accepted at upload. The name is 2–30 characters and the tags string is a comma-separated list used for search. Requires Manage Expressions, and Discord caps the sticker count by boost tier. Returns the created sticker.

NameRequiredDescriptionDefault
nameYesSticker name (2–30 characters).
tagsYesComma-separated search tags.
imageYesSticker file as an https URL, data: URI or base64 (PNG, APNG or Lottie JSON).
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).
descriptionNoOptional description (max 100 chars).

Output Schema

NameRequiredDescription
idYes
urlYes
nameYes
tagsYes
formatYes
availableYes
descriptionYes

TDQS

A4.1/5.0
Behavior5/5

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

Annotations only declare it is a non-idempotent, non-destructive write; the description goes further by naming accepted and rejected media formats, the permission gate, the boost-tier quota, and that the created sticker is returned. That is exactly the kind of context annotations cannot express.

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

Conciseness4/5

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

Front-loaded with the action, then constraints, then return behavior — every sentence carries information. The closing "Returns the created sticker" is slightly redundant given an output schema exists.

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

Completeness4/5

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

With 100% schema coverage, annotations, and an output schema, the description only needs to supply format rules, permissions, and quota limits, which it does. It omits any mention of the audit-log `reason` field and the guild_id scoping, both minor given the schema documents them.

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

Parameters3/5

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

Schema coverage is 100%, so name length, comma-separated tags, and image source formats are already documented; the description mostly restates them. The one genuine addition is the GIF-rejection constraint, and it says nothing about the optional `reason` or `description` parameters.

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

Purpose4/5

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

States a specific verb and resource: "Upload a custom sticker to the server," which unambiguously separates it from edit/delete/list sticker siblings and from emoji creation. It does not explicitly name an alternative tool, so it stops short of full sibling differentiation.

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

Usage Guidelines4/5

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

Gives real preconditions: "Requires Manage Expressions" and "Discord caps the sticker count by boost tier," plus the negative rule that GIFs are rejected at upload. It never states when to use a different tool (e.g., edit_sticker to modify an existing sticker) or what to do if the cap is hit.

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

discord_create_threadA

Create a thread, either branching from an existing message (pass message_id) or as a standalone thread in a text channel (omit message_id). Standalone creation requires a parent text channel and fails if channel_id is itself a thread. Requires the Create Public Threads permission. Returns the new thread's ID.

NameRequiredDescriptionDefault
nameYesName of the thread to create (max 100 characters).
channel_idYesID (snowflake) of the parent text channel. For a message-based thread, the channel containing message_id.
message_idNoOptional. Message to branch the thread from. If omitted, a standalone thread is created in the channel.
auto_archive_durationNoMinutes of inactivity before auto-archiving: 60, 1440, 4320, or 10080. Default 1440 (24h).

TDQS

A4.5/5.0
Behavior5/5

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

With annotations present (readOnlyHint=false, destructiveHint=false, idempotentHint=false), the description still adds substantial context: the required 'Create Public Threads' permission, the failure condition when channel_id is a thread, and the return value ('Returns the new thread's ID'). These are exactly the kind of behavioral disclosures that go beyond structured annotations.

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

Conciseness5/5

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

Three sentences with zero filler: the first states purpose and mode selection, the second covers the constraint, and the third covers permission and return value. Every sentence earns its place, and the most important information is front-loaded.

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

Completeness5/5

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

For a 4-parameter create tool with full schema coverage and a safety-relevant annotation set, the description covers everything an agent needs: the two invocation modes, the failure condition, the auth requirement, and the return value. With no output schema, disclosing the returned thread ID was an important gap that the description fills.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents all four parameters, including the enum values for auto_archive_duration and the optional semantics of message_id. The description adds only marginal value by clarifying the interplay between channel_id and message_id and the standalone-channel constraint, which warrants the baseline score of 3.

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

Purpose5/5

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

The description opens with a specific verb+resource ('Create a thread') and immediately distinguishes the two modes of operation: branching from an existing message via message_id versus standalone creation in a text channel. This clearly differentiates it from sibling tools like discord_create_channel and discord_create_forum_post without needing to name them.

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

Usage Guidelines4/5

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

The description gives clear operational context: when to pass message_id versus omit it, and it states an explicit constraint ('fails if channel_id is itself a thread'), which effectively warns against misuse. However, it does not point to any alternative tool (e.g., discord_create_forum_post for forum channels), so the exclusion guidance is incomplete.

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

discord_create_webhookA

Create a webhook on a channel and return its ID and token. SECURITY: the returned token grants anyone the ability to post as this webhook without authentication; treat it as a secret. Requires the Manage Webhooks permission. Use the returned id+token with discord_send_webhook_message.

NameRequiredDescriptionDefault
nameYesDisplay name for the webhook (max 80 characters).
avatarNoOptional avatar image URL for the webhook.
channel_idYesID (snowflake) of the channel to attach the webhook to.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond what annotations declare (readOnly=false, destructive=false), the description discloses two non-obvious behaviors: the returned token grants unauthenticated posting power and must be treated as a secret, and the Manage Webhooks permission is required. The SECURITY warning is exactly the kind of behavioral context an agent needs to handle the result responsibly.

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

Conciseness5/5

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

Three tight sentences, each earning its place: the core action and return value first, then the security caveat, then permission and downstream routing. No filler, and the most safety-critical information is given immediate prominence.

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

Completeness4/5

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

For a 3-parameter tool with no output schema, the description covers nearly everything an agent needs: purpose, return fields (id and token), the security implications of those fields, required permission, and the follow-up tool. The only minor gap is that the exact response structure/format is not spelled out, but naming 'ID and token' is sufficient for extraction.

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

Parameters3/5

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

Schema description coverage is 100% — name, avatar, and channel_id each have meaningful descriptions in the schema. The tool description adds no parameter-level detail beyond what the schema already provides, so the baseline 3 applies; it neither compensates nor detracts.

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

Purpose5/5

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

The description opens with a specific verb+resource pair ('Create a webhook on a channel') and states the concrete outcome (returns its ID and token). This cleanly separates it from the webhook sibling family — send, edit, delete, list — without needing to name any of them.

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

Usage Guidelines4/5

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

The description gives clear operational context: it names the required permission (Manage Webhooks) and explicitly routes the agent to the downstream consumer (discord_send_webhook_message) with the returned id+token. It does not state when-not-to-use or contrast with alternatives like discord_list_webhooks, but the workflow guidance is strong enough to count as clear context.

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

discord_crosspost_messageA
Idempotent

Publish (crosspost) a message from an Announcement channel to every server that follows it. Only works in announcement channels on a message that has not already been published. Requires the Send Messages permission (and Manage Messages for messages authored by others). Returns a confirmation.

NameRequiredDescriptionDefault
channel_idYesID (snowflake) of the announcement channel containing the message.
message_idYesID of the message to publish to followers.

TDQS

A4.5/5.0
Behavior5/5

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

Adds valuable behavioral context beyond the annotations: channel-type restriction, already-published precondition, permission nuances, and a returned confirmation. There is no direct contradiction with the annotations; the 'not already published' condition is a success precondition, not a claim about repeated side effects.

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

Conciseness5/5

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

Three front-loaded, purposeful sentences: action, key preconditions, permissions, and return. No filler, repetition, or unnecessary detail.

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

Completeness5/5

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

Complete for a two-parameter tool with no output schema. It covers what the tool does, where it works, when it cannot work, what permissions are needed, and what the caller should expect as a result.

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

Parameters3/5

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

The input schema already documents both snowflake parameters with 100% coverage. The description reinforces that channel_id must be an announcement channel and message_id is the message to publish, but adds no substantial new parameter-level meaning.

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

Purpose5/5

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

States a specific verb ('Publish (crosspost)') and resource ('a message from an Announcement channel to every server that follows it'). This clearly distinguishes the tool from regular sending, forwarding, or following operations among the sibling tools.

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

Usage Guidelines4/5

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

Provides clear conditions for use: announcement channels only, message must not already be published, and required permissions. It does not explicitly name an alternative tool for non-announcement-channel messages, so it stops just short of fully explicit routing 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_ruleA
Destructive

Delete an AutoMod rule. IRREVERSIBLE: the rule and its configuration are gone. Requires Manage Server. There is no preview: deleting an AutoMod rule cannot lose member data, and Discord does not offer an undo, so the tool reports exactly which rule was removed.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the audit log.
rule_idYesID of the AutoMod rule to delete.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
nameYes
deletedYes

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already flag destructiveHint and non-idempotency, but the description adds real context beyond them: the operation is irreversible with no Discord-side undo, a specific permission is required, and the tool reports which rule was removed. It also explains why the usual destructive-tool caution about lost member data doesn't apply here.

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

Conciseness4/5

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

Three sentences, front-loaded with the action and the irreversibility warning, with no filler. The final sentence packs two ideas (no undo, returns which rule was removed) into one clause chain, which slightly muddies the closing point.

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

Completeness5/5

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

For a 3-parameter destructive tool with full schema coverage and an output schema, the description supplies exactly the missing pieces: permission requirement, irreversibility, absence of undo, and the safety rationale. Nothing an agent needs before invoking it is absent.

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

Parameters3/5

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

Schema description coverage is 100%, so guild_id, rule_id, and the optional audit-log reason are fully documented in the schema. The description adds no parameter-level detail such as snowflake format or what the audit-log reason is used for, so the baseline 3 applies.

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

Purpose4/5

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

The opening sentence names a specific verb and resource ("Delete an AutoMod rule"), which is unambiguous against siblings like discord_edit_automod_rule or discord_list_automod_rules. It never explicitly names an alternative tool, so it lands at clear-but-not-differentiated rather than a 5.

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

Usage Guidelines4/5

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

It states the permission prerequisite ("Requires Manage Server") and pre-empts the obvious question of whether a confirmation step is needed by explaining why no preview exists. It stops short of explicitly routing the agent (e.g. "use discord_list_automod_rules first to obtain rule_id") or naming when to prefer edit over delete.

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

discord_delete_channelA
Destructive

Permanently delete a channel and all of its messages. IRREVERSIBLE. SAFE BY DEFAULT: dry_run is true unless explicitly set to false, so call it first to preview, then re-call with dry_run:false to actually delete. Requires the Manage Channels permission. An optional reason is recorded in the audit log.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the server audit log.
dry_runNoIf true (default), only reports which channel would be deleted without deleting it. Set false to actually delete.
channel_idYesID (snowflake) of the channel to delete.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and readOnlyHint=false, and the description builds on this by specifying what is destroyed (the channel and all its messages), labeling the operation IRREVERSIBLE, describing the dry_run safeguard, and disclosing the audit-log side effect and permission requirement. It contradicts none of 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.

Conciseness5/5

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

Three sentences with no wasted words: the destructive scope and irreversibility are front-loaded, followed immediately by the dry_run safeguard, then permission and audit-log context. Every sentence earns its place.

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

Completeness4/5

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

With no output schema, the description covers what the tool does, what it destroys, how to invoke it safely, who may use it, and what side effects it causes. The only gap is the return format of the dry-run preview and of the actual deletion, which is minor for a simple mutation tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents channel_id, dry_run, and reason. The description reinforces dry_run's safety role and the audit-log behavior but adds no new per-parameter meaning beyond the schema, keeping this at the high-coverage baseline of 3.

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

Purpose5/5

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

The description opens with 'Permanently delete a channel and all of its messages,' a specific verb and resource with explicit scope. The phrase 'all of its messages' disambiguates it from siblings like discord_delete_message and discord_bulk_delete_messages, which operate on messages rather than the channel itself.

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

Usage Guidelines4/5

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

The description gives an explicit two-step workflow: 'call it first to preview, then re-call with dry_run:false to actually delete,' and states the prerequisite 'Requires the Manage Channels permission.' It does not explicitly name alternatives or say when not to use it, so it falls just short of full routing guidance.

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

discord_delete_dmA
Destructive

Permanently delete a DM message previously sent by this bot. IRREVERSIBLE. The bot can only delete its own DM messages, not the recipient's. Returns a confirmation.

NameRequiredDescriptionDefault
user_idYesDiscord user ID (snowflake) of the DM recipient.
message_idYesID of the target message within the DM conversation.

TDQS

A4.3/5.0
Behavior4/5

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 bar is lower. The description adds value by emphasizing 'IRREVERSIBLE,' the bot-only deletion constraint, and the 'Returns a confirmation' behavior. There is no contradiction with annotations.

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

Conciseness5/5

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

Three short, purposeful sentences. The irreversible nature is front-loaded, followed by the critical scope limitation and return behavior. Every sentence earns its place with no redundancy or filler.

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

Completeness5/5

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

For a simple two-parameter destructive operation with no output schema, the description is complete: it identifies the exact target, states the permission boundary, warns about irreversibility, and describes the result. An agent has enough information to select and invoke this tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, and both parameters already have clear descriptions in the schema. The tool description does not add extra meaning or usage details about user_id or message_id beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

States a specific verb ('Permanently delete') and a well-defined resource ('a DM message previously sent by this bot'). It clearly differentiates from generic delete_message by specifying the DM context and the bot-owned scope, so an agent can distinguish it from siblings like discord_delete_message or discord_bulk_delete_messages.

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

Usage Guidelines4/5

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

The description gives clear context for when this tool is appropriate: deleting DM messages sent by the bot. It also includes an explicit exclusion—'not the recipient's' messages—preventing misuse. However, it does not name sibling alternatives or state when to use a different tool such as discord_delete_message.

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

discord_delete_emojiA
Destructive

Delete a custom emoji. IRREVERSIBLE: the image is gone and every message that used :name: shows as an unknown emoji from then on. Requires Manage Expressions. Managed emojis (created by an integration) cannot be deleted by a bot and Discord will reject the call. Returns the deleted emoji's name.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the audit log.
emoji_idYesID of the emoji to delete.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
nameYes
deletedYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare destructive=true and idempotent=false, but the description goes well beyond them: it explains the concrete blast radius (image gone, every :name: reference renders as unknown), the required permission, the managed-emoji rejection path, and the return value. That is precisely the context an agent cannot derive from hints.

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

Conciseness5/5

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

Four short sentences, front-loaded with the action and the irreversibility warning before permissions and edge cases. No filler and no repetition of the title or annotation flags.

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

Completeness5/5

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

For a destructive 3-parameter mutation, everything an agent needs to call it safely is present: permission gate, managed-emoji failure mode, irreversibility, and outcome. An output schema exists, so the brief mention of the returned name is sufficient rather than required.

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

Parameters3/5

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

Schema coverage is 100%, so emoji_id, guild_id, and the audit-log reason are fully documented in structured data; the description adds no parameter-level detail. Baseline 3 applies since the schema is already carrying that burden.

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

Purpose5/5

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

Opens with a specific verb+resource pair ("Delete a custom emoji") that cannot be confused with siblings such as discord_edit_emoji, discord_create_emoji, or discord_delete_sticker. The scope is narrowed further to custom (non-managed) emojis, which is the exact distinction an agent needs.

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

Usage Guidelines4/5

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

Gives concrete preconditions and exclusions: requires Manage Expressions, and managed emojis created by an integration will be rejected so must not be attempted. It does not explicitly name a sibling as the alternative (e.g., discord_edit_emoji), so it stops short of a 5.

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

discord_delete_forum_postA
Destructive

Permanently delete a forum post (thread) and all its messages. IRREVERSIBLE. To merely close it without deleting, use discord_update_forum_post with archived:true. Requires the Manage Threads permission.

NameRequiredDescriptionDefault
thread_idYesID (snowflake) of the forum post (thread) to delete.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description adds meaningful behavioral context: the deletion is permanent and irreversible, it removes all messages in the post, and it requires the Manage Threads permission. This gives the agent important operational knowledge that annotations alone do not convey.

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

Conciseness5/5

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

The description is compact and front-loaded: the core action comes first, followed by consequence, alternative, and permission. Every sentence adds distinct value and there is no redundancy or filler.

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

Completeness5/5

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

For a one-parameter destructive tool, the description is complete: it states the effect, scope, irreversibility, alternative, and required permission. The absence of an output schema is not a critical gap because the agent has enough information to invoke the tool correctly and understand the consequence.

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

Parameters3/5

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

The input schema already documents thread_id with type, pattern, and a clear description, so the schema carries the parameter semantics. The tool description adds no additional parameter-specific detail, which is acceptable given 100% schema coverage.

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

Purpose5/5

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

The description states a specific verb ('delete'), a specific resource ('forum post (thread)'), and the full scope of the action ('all its messages'). It also clearly distinguishes itself from the related update tool by naming the alternative.

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

Usage Guidelines5/5

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

The description explicitly says when to use this tool: when permanently deleting a forum post is intended. It also gives the exact alternative for a non-destructive action: discord_update_forum_post with archived:true. This is clear routing guidance with no ambiguity.

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

discord_delete_inviteA
Destructive

Revoke an invite by its code so it can no longer be used. IRREVERSIBLE (the code is freed). Requires the Manage Channels permission (or Manage Server). The reason is recorded in the audit log.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the server audit log.
invite_codeYesThe invite code to revoke. A full discord.gg/<code> URL is also accepted.

TDQS

A4.5/5.0
Behavior5/5

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

The description adds meaningful behavioral detail beyond the annotations: the operation is IRREVERSIBLE, the code is freed, it requires Manage Channels (or Manage Server) permission, and the reason is recorded in the audit log. This goes well beyond the destructiveHint and idempotentHint already provided.

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

Conciseness5/5

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

Three short sentences, each carrying essential information: the primary action, the irreversibility warning, and the permission/logging context. No filler, no repetition of schema details, and key warnings are front-loaded.

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

Completeness5/5

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

The description is complete for a simple two-parameter destructive tool. It covers purpose, permission requirements, irreversibility, audit logging, and the parameter format is already fully documented in the schema. No output schema exists, but a successful delete response is not essential for an agent to invoke this correctly.

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

Parameters3/5

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

The input schema already has full (100%) coverage of both parameters, including the fact that reason is optional and recorded in the audit log. The description adds little parameter-specific meaning beyond referring to 'code' and mentioning the audit log, so the schema carries the load as expected.

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

Purpose5/5

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

The description states a specific action (revoke), the exact resource (an invite identified by its code), and the direct consequence (it can no longer be used). This clearly distinguishes it from sibling tools like discord_create_invite, discord_get_invite, and discord_list_invites.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: revoking an invite code that should no longer work. It also states the required permission, which helps the agent decide whether it can perform the operation. It does not explicitly name alternatives or exclusion conditions, so it stops short of a 5.

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

discord_delete_messageA
Destructive

Permanently delete one specific message. IRREVERSIBLE. The bot can always delete its own messages; deleting another user's message requires the Manage Messages permission. Use discord_bulk_delete_messages to remove many at once. An optional reason is recorded in the audit log.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the server audit log.
channel_idYesID (snowflake) of the channel or thread containing the message.
message_idYesID of the message to delete.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the destructiveHint and readOnlyHint annotations, the description adds concrete behavioral details: the action is IRREVERSIBLE, permission depends on message ownership, and the optional reason is recorded in the audit log. These disclosures help an agent anticipate side effects without relying on structured fields alone.

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

Conciseness5/5

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

All sentences are short and information-dense, with the core action and irreversibility warning front-loaded. The alternative-tool routing and permission note each earn their place; there is no fluff or repetition.

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

Completeness5/5

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

For a simple single-message delete operation, the description covers the action, destructiveness, permission requirements, the relevant alternative, and the audit-log side effect. No output schema exists, and none is needed for an agent to invoke this tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, with all three parameters already documented with descriptions and patterns. The description only restates the audit-log effect of the reason parameter, already present in the schema, so it adds no new parameter-level meaning. Baseline 3 is appropriate.

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

Purpose5/5

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

Description opens with 'Permanently delete one specific message', a clear verb+resource+scope statement. It distinguishes itself from bulk deletion and other delete-related siblings by emphasizing 'one specific message'.

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

Usage Guidelines5/5

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

Explicitly names discord_bulk_delete_messages as the alternative for removing many messages at once. It also states the permission prerequisite: the bot can always delete its own messages, while deleting another user's message requires Manage Messages permission. This gives clear when-to-use and when-not-to-use guidance.

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

discord_delete_reaction_role_menuA
Destructive

Remove every reaction-role mapping attached to one message. The message itself is left alone. Returns the number of mappings removed, so a call that matched nothing is visible as 0 rather than as success.

NameRequiredDescriptionDefault
reasonNo
channel_idYes
message_idYes

Output Schema

NameRequiredDescription
removedYes
channel_idYes
message_idYes

TDQS

A4.3/5.0
Behavior5/5

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

With destructiveHint=true already declaring the safety profile, the description adds genuinely useful context: exactly what is destroyed (all mappings for one message), what is explicitly preserved (the message), and how to interpret a no-op result (returns 0 rather than a success signal). That last point is important behavioral nuance beyond the annotation.

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

Conciseness5/5

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

Three short sentences with zero waste. Scope comes first, then the preservation caveat, then the return-value nuance — all front-loaded and easy to scan.

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

Completeness4/5

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

For a simple destructive mutation with annotations and an output schema, the key behavioral facts are covered: what is removed, what is not, and how to read a zero result. The only missing piece is parameter-level explanation, which matters more here because schema coverage is 0%.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry the burden of explaining the three parameters. It only hints at message_id via 'one message'; it says nothing about channel_id or the optional reason field, so an agent gets no added meaning beyond the parameter names and ID patterns.

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

Purpose5/5

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

States a specific verb ('Remove') and resource ('reaction-role mapping') with explicit scope ('attached to one message'). It also distinguishes from the nearest alternative by clarifying 'The message itself is left alone', so an agent can tell this apart from discord_remove_reactions and discord_delete_message without opening either schema.

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

Usage Guidelines4/5

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

The context is clear: this targets reaction-role mappings for a single message, and the note that the message is preserved implicitly steers agents away from delete_message. It does not explicitly name sibling tools or state prerequisites/permissions, but the when-to-use condition is unmistakable.

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

discord_delete_roleA
Destructive

Permanently delete a role from the server; it is automatically removed from every member who held it. IRREVERSIBLE. Requires the Manage Roles permission, and the role must be below the bot's highest role.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the server audit log.
role_idYesID (snowflake) of the role to delete.
guild_idYesDiscord server (guild) ID (snowflake).

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the bar is lowered; the description adds substantial context beyond that: the cascading removal from all members, explicit irreversibility, the Manage Roles permission requirement, and the hierarchy constraint relative to the bot's highest role. Nothing contradicts 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.

Conciseness5/5

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

Three sentences, each earning its place: the core action, the cascade consequence, and the prerequisites/irreversibility warning. Front-loaded with the verb and resource; zero filler.

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

Completeness5/5

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

For a 3-parameter tool with full schema coverage, no nested objects, and no output schema (delete endpoints typically return nothing), the description covers every decision-critical fact: what is destroyed, side effects on members, irreversibility, permission, and hierarchy. An agent can determine whether and how to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents guild_id, role_id, and reason; the baseline 3 applies. The description adds only peripheral param context (the hierarchy constraint on role_id), not format or syntax detail beyond the schema.

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

Purpose5/5

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

States a specific verb and resource: 'Permanently delete a role from the server.' The cascade note ('automatically removed from every member who held it') disambiguates from sibling discord_remove_role, which unassigns a role from a member without deleting the role itself.

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

Usage Guidelines3/5

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

The prerequisites ('Requires the Manage Roles permission, and the role must be below the bot's highest role') give clear conditions for when the call will succeed, and 'IRREVERSIBLE' warns against casual use. However, it never names alternatives (e.g., discord_edit_role to modify, discord_remove_role to unassign instead), leaving when-not-to-use to inference.

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

discord_delete_scheduled_eventA
Destructive

Permanently delete a scheduled event. IRREVERSIBLE. To cancel an event while keeping a record, use discord_edit_scheduled_event with status:'CANCELED' instead. Requires the Manage Events permission.

NameRequiredDescriptionDefault
event_idYesID (snowflake) of the event to delete.
guild_idYesDiscord server (guild) ID (snowflake).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false. The description adds meaningful context: the operation is irreversible, requires the Manage Events permission, and offers a non-destructive alternative. It doesn't go into deeper edge cases, but it exceeds the minimum burden.

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

Conciseness5/5

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

Three sentences, each with a purpose: statement of action, warning about irreversibility, and explicit routing to an alternative with a required parameter value. Front-loaded with the core behavior and no wasted words.

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

Completeness4/5

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

For a destructive mutation tool, it covers irreversibility, required permission, and the safer alternative. The output schema is absent, but the description need not explain return values. It could mention edge cases like 'event not found' but that's not necessary for basic invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters. The description doesn't add syntax or format details beyond what the schema provides, but it doesn't need to. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (permanently delete) and the resource (scheduled event). It differentiates itself from sibling discord_edit_scheduled_event by explicitly noting the alternative for cancellation, leaving no ambiguity about what this tool does.

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

Usage Guidelines5/5

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

It explicitly states when to use this tool and when not to: 'To cancel an event while keeping a record, use discord_edit_scheduled_event with status:'CANCELED' instead.' This directly guides the agent to the correct alternative and condition.

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

discord_delete_stickerA
Destructive

Delete a custom sticker from the server. IRREVERSIBLE: the artwork is gone and messages that used it lose the image. Requires Manage Expressions. Standard (Discord-provided) stickers cannot be deleted; this tool only removes guild stickers. Returns the deleted sticker's name.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).
sticker_idYesID of the sticker to delete.

Output Schema

NameRequiredDescription
nameYes
deletedYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already flag destructiveHint and non-idempotency, but the description adds substance beyond them: the deletion is irreversible, artwork is gone, and messages that used the sticker lose the image. It also discloses the permission gate and the return value, which annotations cannot express.

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

Conciseness5/5

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

Four compact sentences, with the irreversible warning front-loaded ahead of prerequisites and edge cases. No sentence is filler; each adds a distinct operational fact.

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

Completeness5/5

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

An output schema exists, so the brief mention of the return value is a bonus rather than a necessity. Combined with full schema coverage and annotations, the description leaves nothing an agent needs unresolved for a destructive single-resource delete.

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

Parameters3/5

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

Schema coverage is 100%, so guild_id, sticker_id, and reason are fully documented inline and the description adds no syntax or format detail beyond that. Baseline 3 is appropriate when the schema carries all parameter meaning.

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

Purpose5/5

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

States a specific verb and resource (delete a custom sticker from the server) and immediately scopes it: guild stickers only, not Discord-provided standard stickers. That scope distinction separates it cleanly from siblings like discord_edit_sticker and discord_delete_emoji.

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

Usage Guidelines4/5

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

Gives a clear negative condition (standard stickers cannot be deleted) and a prerequisite (Requires Manage Expressions), which is real usage context. It stops short of explicitly routing an agent to an alternative sibling, so it lands just below the top.

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

discord_delete_webhookA
Destructive

Permanently delete a webhook by its ID, invalidating its token. IRREVERSIBLE: any integrations using the old token will stop working. Requires the Manage Webhooks permission.

NameRequiredDescriptionDefault
webhook_idYesID (snowflake) of the webhook to delete.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, and the description goes beyond them meaningfully: it names what gets destroyed (the token), the consequence (integrations using the old token stop working), marks the operation IRREVERSIBLE, and surfaces the auth requirement. This directly adds the 'what gets destroyed' and 'auth needs' context the rubric credits. It is strong but not exhaustive — no mention of error behavior for invalid/nonexistent IDs or rate limits.

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

Conciseness5/5

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

Three tight sentences, each earning its place: the action, the irreversibility warning with concrete impact, and the permission prerequisite. The action is front-loaded, and there is zero filler or repetition of the input schema.

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

Completeness4/5

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

For a low-complexity tool (one parameter, no output schema, annotations present), the description covers the essentials: what it does, what it destroys, irreversibility, and the required permission. The only gaps are error/return behavior (e.g., what happens on a second delete of the same webhook) and rate-limit info, which are minor for a simple destructive operation.

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

Parameters3/5

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

Schema description coverage is 100%: webhook_id is already documented as the snowflake ID of the webhook to delete, with a regex pattern. The description's phrase 'by its ID' merely restates the schema. Per the rubric, a baseline of 3 applies when the schema carries the load; the description adds no parameter-level detail beyond it.

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

Purpose4/5

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

The description states a specific verb and resource with precise scope: 'Permanently delete a webhook by its ID, invalidating its token.' The token-invalidation detail makes clear this targets the webhook resource itself, not a webhook message (discord_delete_webhook_message), so it is implicitly distinguishable. However, it does not explicitly name or contrast any sibling, falling just short of the top bar.

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

Usage Guidelines3/5

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

The description implies when to use the tool (when a webhook must be permanently removed) and states a clear prerequisite: 'Requires the Manage Webhooks permission.' But it offers no when-not-to-use guidance or alternatives (e.g., clarify that deleting a webhook message is a different tool). This is more than 'no guidance' but less than explicit exclusions.

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

discord_delete_webhook_messageA
Destructive

Permanently delete a message that was sent through a webhook, using the webhook's ID and token. IRREVERSIBLE. Requires the original webhook token.

NameRequiredDescriptionDefault
message_idYesID of the webhook message to delete.
webhook_idYesID (snowflake) of the webhook that sent the message.
webhook_tokenYesSecret token of the webhook.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark this as destructive (destructiveHint: true), and the description reinforces this with 'Permanently delete' and 'IRREVERSIBLE.' It also adds a meaningful prerequisite beyond the schema: the original webhook token must be used. No contradiction with annotations exists.

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

Conciseness4/5

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

The description is brief and front-loads the core destructive action. There is slight redundancy between 'Permanently delete' and 'IRREVERSIBLE,' and the token requirement is repeated from the schema, but the overall structure is efficient and easy to parse.

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

Completeness4/5

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

Given the destructive annotations and complete parameter schema, the description provides enough context to invoke the tool correctly: the target resource, necessary credentials, and irreversibility. It does not describe response behavior or error cases, but no output schema exists and this is a simple delete operation, so the omission is not critical.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already well documented. The description adds minimal semantic value beyond the schema, mainly clarifying that the token must be the original webhook token. This meets the baseline for fully-covered schema parameters without adding substantial meaning.

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

Purpose5/5

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

The description states a specific action — permanently deleting a message sent through a webhook — and identifies the required auth context (webhook ID and token). The phrase 'through a webhook' clearly distinguishes it from sibling tools like discord_delete_message, which handles non-webhook messages.

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

Usage Guidelines4/5

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

The description clearly implies this tool is for webhook-sent messages and emphasizes that the original webhook token is required. It does not explicitly name alternatives or say when not to use it, but the webhook-specific framing is strong enough to guide selection among the many sibling message tools.

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

discord_diagnose_configurationA
Read-only

Diagnose the server's configuration end to end: the bot's permission baseline, Community prerequisites, the AFK/system/rules channel slots, per-channel bot visibility, role hierarchy, AutoMod presence, intents, and the env flags in effect. Each finding carries a concrete fix. Read-only. Run this first when something behaves unexpectedly.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
healthyYes
findingsYes
guild_idYes
checks_runYes
environmentYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the 'Read-only' sentence is largely redundant. The description does add real behavioral context beyond the annotations: findings come back with a concrete fix attached, which tells the agent the output is actionable rather than a raw dump. It says nothing about cost, latency, or required bot permissions for the diagnostic itself.

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

Conciseness5/5

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

Three sentences, zero filler: the capability list, the output promise, and the read-only/routing note. The scope enumeration is front-loaded and each item in it corresponds to a real diagnostic area rather than padding.

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

Completeness4/5

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

With an output schema present, the description needn't explain return values, and it still flags that findings include fixes. Combined with annotation-covered safety, the only gap is operational: no hint about permissions needed or how long a full sweep takes on a large server.

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

Parameters3/5

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

The single guild_id parameter has full schema description coverage including a snowflake pattern, so the schema does the work. The description only implies server scoping through 'the server's configuration' and adds no format or edge-case guidance, which matches the baseline 3 for high-coverage schemas.

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

Purpose4/5

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

States a specific verb and resource ('Diagnose the server's configuration end to end') and enumerates exactly what is inspected: bot permission baseline, Community prerequisites, channel slots, per-channel visibility, role hierarchy, AutoMod, intents, env flags. That enumeration makes the scope unmistakable, though it never names overlapping siblings such as discord_find_permission_problems or discord_verify_setup, so an agent must infer the boundary itself.

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

Usage Guidelines4/5

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

'Run this first when something behaves unexpectedly' gives a clear trigger condition and positions the tool as the entry point of a diagnostic flow. It stops short of saying when NOT to use it or which narrower sibling (discord_check_tool_permissions, discord_explain_permissions) to prefer once the problem is localized.

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

discord_edit_automod_ruleA
Idempotent

Update an AutoMod rule: rename it, enable or disable it, replace its trigger metadata or actions, or change its exemptions. Only provided fields change; trigger_type cannot be changed after creation (Discord does not allow it), so delete and recreate to switch trigger type. Requires Manage Server. Returns the updated rule.

NameRequiredDescriptionDefault
nameNoNew rule name.
reasonNoOptional reason recorded in the audit log.
actionsNoReplacement action list.
enabledNoEnable or disable the rule.
presetsNoReplacement preset list.
rule_idYesID of the AutoMod rule to edit.
guild_idYesDiscord server (guild) ID (snowflake).
keywordsNoReplacement keyword list.
allow_listNoReplacement allow list.
regex_patternsNoReplacement regex list.
exempt_role_idsNoReplacement exempt roles.
exempt_channel_idsNoReplacement exempt channels.
mention_total_limitNoNew mention limit.
mention_raid_protectionNoToggle mention raid protection.

Output Schema

NameRequiredDescription
idYes
nameYes
actionsYes
enabledYes
presetsYes
keywordsYes
allow_listYes
creator_idYes
event_typeYes
trigger_typeYes
regex_patternsYes
exempt_role_idsYes
exempt_channel_idsYes
mention_total_limitYes
mention_raid_protectionYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only say not-read-only, not-destructive, idempotent, open-world; the description adds the auth requirement, the PATCH-style merge semantics, the immutability of trigger_type, and the return ("Returns the updated rule"). It also implicitly qualifies destructiveHint=false by disclosing that arrays are replaced wholesale rather than merged, which is the kind of nuance an agent needs before overwriting a keyword list.

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

Conciseness5/5

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

Four sentences, front-loaded with the mutation scope, then the partial-update rule, then the hard constraint with its workaround, then the return and permission. No sentence is filler.

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

Completeness5/5

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

For a 14-parameter mutation tool, the description covers permissions, partial-update semantics, the one immutable field, and the response; an output schema exists so return-value detail is not needed. Nothing essential for a correct call is missing.

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

Parameters4/5

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

Schema coverage is 100% and all 14 params are individually documented, so baseline is 3. The description adds genuine meaning beyond the schema: only supplied fields change, and one field the caller might expect to edit (trigger_type) is absent by design because it cannot be changed. It does not group or explain the trigger-metadata fields (keywords vs presets vs regex) beyond naming them.

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

Purpose5/5

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

States a specific verb and resource ("Update an AutoMod rule") and enumerates exactly what is mutable: name, enabled state, trigger metadata, actions, exemptions. An agent can distinguish this from discord_create_automod_rule, discord_get_automod_rule and discord_delete_automod_rule on the verb alone.

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

Usage Guidelines5/5

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

Gives the prerequisite ("Requires Manage Server"), the partial-update contract ("Only provided fields change"), and an explicit alternative path when the change is impossible here: "trigger_type cannot be changed after creation... so delete and recreate to switch trigger type." That is a concrete when-not-and-what-instead rule.

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

discord_edit_channelA
Idempotent

Update a channel's name, topic, slowmode, or NSFW flag. Only provided fields change; topic and slowmode apply to text channels only. Requires the Manage Channels permission. Returns a confirmation.

NameRequiredDescriptionDefault
nameNoNew channel name (max 100 characters).
nsfwNoMark (true) or unmark (false) the channel as age-restricted (NSFW).
topicNoNew topic/description (text channels only).
slowmodeNoPer-user message cooldown in seconds, 0–21600. 0 disables slowmode.
channel_idYesID (snowflake) of the channel to edit.

TDQS

A4.7/5.0
Behavior5/5

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

The description adds meaningful behavioral detail beyond the annotations: partial-update semantics, text-channel-only restrictions for topic and slowmode, permission requirements, and a confirmation response. These are not visible in the annotations or schema and are especially valuable for a mutating tool.

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

Conciseness5/5

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

Three short sentences with no filler. The main purpose and editable fields are front-loaded, followed by the partial-update caveat, permission requirement, and return behavior. Every sentence earns its place.

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

Completeness5/5

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

For a moderately complex edit tool with full schema coverage and no output schema, the description covers the editable fields, constraints, permission, partial-update semantics, and return value. Nothing essential for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining cross-parameter behavior ('Only provided fields change') and the text-channel-only constraint for topic and slowmode, which the schema does not convey.

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

Purpose5/5

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

The description names a specific verb ('Update') and resource ('a channel'), then enumerates exactly which fields are editable: name, topic, slowmode, or NSFW flag. This clearly distinguishes it from sibling tools like move_channel, set_channel_position, and delete_channel.

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

Usage Guidelines4/5

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

The description makes the usage context clear: use it to update channel settings, only provided fields change, and topic/slowmode are text-channel-only. It also states the Manage Channels permission requirement. It does not explicitly name alternative sibling tools, but the field list effectively implies when this tool is appropriate.

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

discord_edit_dmA
Idempotent

Edit the text content of a DM message previously sent by this bot. Only the bot's own DM messages can be edited. Use discord_edit_dm_embed for embed messages. Returns a confirmation.

NameRequiredDescriptionDefault
contentYesNew plain-text content that fully replaces the existing message (max 2000 characters).
user_idYesDiscord user ID (snowflake) of the DM recipient.
message_idYesID of the target message within the DM conversation.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the description only needs to add context. It adds meaningful behavioral constraints: only the bot's own DM messages can be edited, and it returns a confirmation. No contradiction with annotations exists.

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

Conciseness5/5

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

Three concise sentences with no filler. The main action is front-loaded, followed by the ownership constraint, an alternative-tool pointer, and a return-value note. Every sentence earns its place.

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

Completeness5/5

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

For a simple edit operation with fully documented parameters and annotations covering safety/idempotency, the description covers the essential context: what it edits, who can edit it, when to use a different tool, and what the return is. No important calling context is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters, including content constraints and the max 2000-character limit. The description adds little beyond saying 'text content' and 'confirmation,' which is sufficient but not a significant enrichment.

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

Purpose5/5

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

The description states a specific action ('Edit the text content of a DM message'), identifies the resource (DM message previously sent by this bot), and scopes the tool clearly. It also explicitly distinguishes itself from discord_edit_dm_embed for embed messages.

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

Usage Guidelines5/5

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

The description gives a clear when-to-use condition ('DM message previously sent by this bot') and a when-not-to-use condition ('Only the bot's own DM messages can be edited'). It also names the alternative for embed messages: 'Use discord_edit_dm_embed for embed messages.'

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

discord_edit_dm_embedA
Idempotent

Replace the embed on a DM message previously sent by this bot. Only the bot's own messages can be edited. Full replace, not merge: provided fields are applied and omitted fields are dropped. Returns a confirmation.

NameRequiredDescriptionDefault
urlNoURL that makes the title clickable.
colorNoSide-bar color as a hex string, e.g. '#5865F2'.
titleNoEmbed title shown in bold at the top.
authorNoAuthor block shown at the top of the embed.
fieldsNoUp to 25 name/value field blocks. Set inline:true on a field to render it side-by-side with adjacent inline fields (up to 3 per row).
footerNoFooter text shown at the bottom of the embed.
contentNoOptional new plain text shown above the embed.
user_idYesDiscord user ID (snowflake) of the DM recipient.
image_urlNoLarge image shown below the embed body.
timestampNoIf true, stamp the embed with the current time.
message_idYesID of the target message within the DM conversation.
descriptionNoMain body text of the embed (supports Markdown).
thumbnail_urlNoSmall image shown in the top-right corner.

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses the full-replace behavior ('provided fields are applied and omitted fields are dropped'), which is a critical non-obvious trait. Annotations already indicate idempotentHint=true and destructiveHint=false, so the description's replacement semantics add meaningful context beyond annotations. It also states the return is a confirmation, which is useful. Slight gap: no mention of auth/rate limits or what happens if the message isn't found.

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

Conciseness5/5

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

Three sentences with zero filler. The first sentence states the verb+resource, the second adds the critical ownership constraint, and the third crystallizes the most important behavior (full replace). Everything is front-loaded and earns its place.

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

Completeness4/5

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

Given the 100% schema coverage, the required params are clear, and the nested object shapes (author, fields) are fully documented. The description explains the full-replace semantic that the schema can't express, and the confirmation return. Minor omissions (error cases, not-found behavior) are acceptable for an edit tool with idempotentHint=true.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all 13 parameters. The description's 'full replace, not merge' is high-level and applies to all parameters collectively, but it doesn't add per-parameter meaning beyond the schema. This is baseline 3 territory since the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly identifies the specific verb ('Replace'), the resource ('the embed on a DM message previously sent by this bot'), and distinct scope ('DM message', 'previously sent by this bot'). It also differentiates from generic edit tools by specifying DM-only context and bot-owned messages.

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

Usage Guidelines4/5

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

The description states the critical when-not-to-use constraint: only the bot's own messages can be edited. It clearly implies this tool is for DM messages, distinguishing it from discord_edit_embed (which likely targets server messages). However, it doesn't explicitly name an alternative tool like discord_edit_embed or discord_edit_dm for non-embed edits, so it misses the full explicit alternative mapping.

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

discord_edit_embedA
Idempotent

Replace the embed on a message previously sent by this bot. Only this bot's messages can be edited. This is a full replace, not a merge: provided fields are applied and omitted fields are dropped from the embed. Returns a confirmation.

NameRequiredDescriptionDefault
urlNoURL that makes the title clickable.
colorNoSide-bar color as a hex string, e.g. '#5865F2'.
titleNoEmbed title shown in bold at the top.
authorNoAuthor block shown at the top of the embed.
fieldsNoUp to 25 name/value field blocks. Set inline:true on a field to render it side-by-side with adjacent inline fields (up to 3 per row).
footerNoFooter text shown at the bottom of the embed.
image_urlNoLarge image shown below the embed body.
timestampNoIf true, stamp the embed with the current time.
channel_idYesID (snowflake) of the channel or thread containing the message.
message_idYesID of the message to edit. Must be a message authored by this bot (an embed is added if it has none).
descriptionNoMain body text of the embed (supports Markdown).
thumbnail_urlNoSmall image shown in the top-right corner.

TDQS

A4.6/5.0
Behavior5/5

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

The description discloses the critical behavioral nuance beyond the annotations: this is a full replace, not a merge, so omitted fields are dropped. It also states the bot-only restriction and that a confirmation is returned. The annotations already cover read/write and idempotency, and there is no contradiction.

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

Conciseness5/5

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

The description is three sentences with no filler: purpose and restriction first, the essential replace-not-merge behavior second, and the return behavior third. Every sentence earns its place.

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

Completeness4/5

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

The schema thoroughly documents all 12 parameters, including nested objects and field limits, and the description covers scope, replacement semantics, and a return confirmation. Since there is no output schema, a slightly richer description of the confirmation payload would make it fully complete, but it is sufficient for correct invocation.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by clarifying that omitted optional fields are cleared rather than preserved, which materially affects how an agent should construct arguments. It does not add per-parameter details beyond what the schema already provides.

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

Purpose5/5

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

The description states a specific action and resource: 'Replace the embed on a message previously sent by this bot.' It clearly differentiates this from sending a new embed or editing message text, and the 'Only this bot's messages can be edited' boundary adds precision.

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

Usage Guidelines4/5

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

The description provides a clear precondition: the target message must have been sent by this bot, which tells the agent when not to use the tool. However, it does not explicitly name alternatives such as discord_edit_message or discord_edit_dm_embed, so it stops short of full routing guidance.

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

discord_edit_emojiA
Idempotent

Rename a custom emoji or change which roles may use it. Only provided fields change. Requires Manage Expressions. Passing role_ids replaces the whole restriction list; pass an empty array to open the emoji to everyone. Returns the updated emoji.

NameRequiredDescriptionDefault
nameNoNew emoji name.
reasonNoOptional reason recorded in the audit log.
emoji_idYesID of the emoji to edit.
guild_idYesDiscord server (guild) ID (snowflake).
role_idsNoReplacement role restriction list. Empty array means everyone.

Output Schema

NameRequiredDescription
idYes
urlYes
nameYes
managedYes
animatedYes
role_idsYes
author_idYes
availableYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnly=false, idempotent=true, destructive=false), the description discloses the critical hidden behavior: role_ids replaces the entire restriction list rather than appending, and an empty array opens the emoji to everyone. The permission gate and the "returns the updated emoji" outcome add further context the structured fields don't carry.

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

Conciseness5/5

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

Five short sentences, front-loaded with the action and followed by constraint, then edge-case semantics. Every sentence contributes new information; there is no restatement of the tool name or filler.

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

Completeness5/5

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

For a 5-parameter mutation tool with an output schema, the description covers purpose, permission requirement, partial-update behavior, the destructive edge case of role_ids replacement, and the return value. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuinely non-schema meaning: partial-update semantics (only supplied fields change) and the whole-list replacement behavior of role_ids. The name and guild/emoji identifiers are left to the schema, which is fine given its coverage.

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

Purpose5/5

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

The description opens with specific verbs and a resource ("Rename a custom emoji or change which roles may use it"), which cleanly separates it from the sibling lifecycle tools discord_create_emoji, discord_delete_emoji and discord_list_emojis. An agent can identify the operation 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.

Usage Guidelines4/5

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

It gives a clear precondition ("Requires Manage Expressions") and PATCH semantics ("Only provided fields change"), which tells an agent when this call is appropriate versus a create/delete. It stops short of explicitly naming which sibling to use instead for creation or deletion, so it falls one step below a 5.

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

discord_edit_messageA
Idempotent

Edit the text content of a message previously sent by this bot. Discord forbids editing other users' messages, so this fails for non-bot messages. Use discord_edit_embed for embed messages. Works in text channels and threads. Returns the edited message ID.

NameRequiredDescriptionDefault
contentYesNew plain-text content that fully replaces the existing content (max 2000 characters).
channel_idYesID (snowflake) of the channel or thread containing the message.
message_idYesID of the message to edit. Must be a message authored by this bot.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only establish that this is a mutating, idempotent, non-destructive operation; the description goes well beyond them by disclosing the failure mode for non-bot messages, the threading scope, and the return value (edited message ID). Stating the return value is especially valuable given there is no output schema. No contradiction with 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.

Conciseness5/5

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

Four short sentences, each carrying distinct information: core action, failure condition, alternative routing, and scope/return value. The primary purpose is front-loaded and there is zero filler.

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

Completeness5/5

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

For a 3-parameter tool with a fully documented schema, the description fills the gaps that structured data cannot: when it fails, which sibling to use instead, where it works, and what it returns. Nothing needed for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter already documented (snowflake patterns, bot-authorship requirement, max 2000 characters, full replacement semantics). The description adds only marginal reinforcement about channel/thread context, so it stays at the baseline 3 rather than compensating for any gap.

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

Purpose5/5

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

States a specific verb and resource: editing the text content of a message previously sent by this bot. It additionally distinguishes itself from its closest sibling by noting 'Use discord_edit_embed for embed messages.' An agent can tell this tool apart 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.

Usage Guidelines5/5

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

Explicitly names the alternative tool (discord_edit_embed) and the condition that selects it (embed messages), and warns that the operation fails for non-bot messages. It also scopes where the tool works (text channels and threads). This is explicit when/when-not guidance with a named alternative.

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

discord_edit_roleA
Idempotent

Update an existing role's name, color, permissions, hoist, or mentionable flag. Only provided fields change; passing permissions REPLACES the role's full permission set. Requires the Manage Roles permission, and the role must be below the bot's highest role.

NameRequiredDescriptionDefault
nameNoNew role name (max 100 characters).
colorNoNew role color as a hex string, e.g. '#FF5733'.
hoistNoIf true, display members with this role separately in the member list.
role_idYesID (snowflake) of the role to edit.
guild_idYesDiscord server (guild) ID (snowflake).
mentionableNoIf true, anyone can @mention this role.
permissionsNoPermission flag names. Providing this REPLACES the role's entire permission set. Uses Discord PermissionsBitField flag names.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses critical behavior: partial updates are the default, but passing 'permissions' replaces the entire permission set. It also reveals authorization and hierarchy constraints. This is exactly the kind of behavioral context an agent needs to avoid unintended permission overwrites.

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

Conciseness5/5

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

Three dense sentences with no filler. The first sentence states the tool's purpose and scope, the second explains the critical partial-update and replacement semantics, and the third covers permissions and hierarchy. Information is front-loaded and every sentence earns its place.

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

Completeness5/5

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

Given a 7-parameter mutation tool with no output schema, the description is complete enough for correct selection and invocation. It covers what changes, how partial updates work, the dangerous permissions-replacement behavior, and the required permission/position conditions. No critical gap remains.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by clarifying the update contract: unspecified fields remain unchanged and permissions are replaced wholesale rather than merged. This is valuable semantic information not fully captured by the field descriptions alone.

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

Purpose5/5

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

Description uses a specific verb ('Update') and resource ('existing role'), and enumerates the exact mutable attributes: name, color, permissions, hoist, mentionable. This clearly differentiates it from sibling tools like discord_create_role, discord_delete_role, discord_set_role_position, and discord_set_role_permission.

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

Usage Guidelines4/5

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

The description gives clear operational context: it edits role settings, only provided fields change, and it states important prerequisites (Manage Roles permission and role position below the bot's highest role). It does not explicitly name alternatives or state when not to use this tool, but the scope is unambiguous.

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

discord_edit_scheduled_eventA
Idempotent

Update a scheduled event; only provided fields change. Use the status field to start ('ACTIVE'), end ('COMPLETED'), or cancel ('CANCELED') an event; Discord only allows certain status transitions. Requires the Manage Events permission.

NameRequiredDescriptionDefault
nameNoNew event name (max 100 characters).
imageNoNew cover image URL.
statusNoChange event status. Allowed transitions only: SCHEDULED→ACTIVE→COMPLETED, or SCHEDULED→CANCELED (no transition back to SCHEDULED exists).
event_idYesID (snowflake) of the event to edit.
guild_idYesDiscord server (guild) ID (snowflake).
locationNoNew free-text location for EXTERNAL events.
channel_idNoNew voice/stage channel ID (snowflake) for VOICE/STAGE_INSTANCE events.
descriptionNoNew event description (max 1000 characters).
scheduled_end_timeNoNew end time as an ISO 8601 datetime.
scheduled_start_timeNoNew start time as an ISO 8601 datetime.

TDQS

A4/5.0
Behavior4/5

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

Adds real context beyond annotations: partial-update semantics (consistent with idempotentHint=true), the permission gate, and status-transition constraints. It does not describe the response or what happens to event subscribers when an event is canceled, keeping it below 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.

Conciseness5/5

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

Three compact sentences, front-loaded with the patch semantics, followed by status behavior and the permission requirement. No filler and every sentence carries information the agent needs.

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

Completeness4/5

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

For a 10-parameter mutation tool with annotations covering safety and idempotency and a fully documented schema, the description covers partial update, status transitions, and permissions. Return value and post-cancellation effects are omitted, which is acceptable given no output schema expectation but leaves a small gap.

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

Parameters3/5

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

Schema coverage is 100% and each parameter already documents format and constraints, including the status enum's allowed transitions. The description restates the status behavior rather than adding new parameter-level meaning, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Update a scheduled event') plus the patch semantics ('only provided fields change'), which distinguishes it from discord_create_scheduled_event and discord_delete_scheduled_event in the sibling set. It does not explicitly name those siblings, so it stops short of a 5.

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

Usage Guidelines4/5

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

Explains when to use the status field (start/end/cancel), warns that Discord only permits certain transitions, and states the Manage Events permission prerequisite. It does not explicitly route the agent away from create/delete siblings, but the usage context is unambiguous.

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

discord_edit_stickerA
Idempotent

Update a custom sticker's name, description or tags. Only provided fields change. Requires Manage Expressions. The image itself cannot be changed: Discord has no endpoint for it, so delete and re-upload to replace the artwork. Returns the updated sticker.

NameRequiredDescriptionDefault
nameNoNew name (2–30 characters).
tagsNoReplacement comma-separated tags.
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).
sticker_idYesID of the sticker to edit.
descriptionNoNew description, or null to clear.

Output Schema

NameRequiredDescription
idYes
urlYes
nameYes
tagsYes
formatYes
availableYes
descriptionYes

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (non-destructive, idempotent, openWorld), the description discloses three things structured fields cannot: partial-update semantics, the required Manage Expressions permission, and the hard limitation that artwork is not editable through this tool. It also states the return ('the updated sticker'), which exists in the output schema but reinforces expectations.

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

Conciseness5/5

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

Four short sentences, front-loaded with the action and mutable fields, followed by semantics, permission, limitation, and return. Every sentence carries distinct information with no repetition of the schema.

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

Completeness4/5

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

For a six-parameter mutation tool with a full output schema and annotations, the description covers permission, partial-update behavior, the key limitation and the return value. The only gap is that the null-clears-description nuance is left solely to the schema.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter is already documented with types, patterns and length bounds. The description contributes only the partial-update rule ('Only provided fields change'), which explains why only guild_id and sticker_id are required. It does not mention the null-to-clear behavior for description, so the baseline 3 holds.

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

Purpose5/5

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

States a specific verb and resource ('Update a custom sticker') plus the exact mutable fields (name, description, tags). It is instantly distinguishable from discord_create_sticker, discord_delete_sticker and discord_edit_emoji without opening any schema.

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

Usage Guidelines5/5

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

It gives both when-to-use and an explicit when-not: 'The image itself cannot be changed: Discord has no endpoint for it, so delete and re-upload to replace the artwork.' It also names the prerequisite capability (Manage Expressions) and clarifies patch semantics ('Only provided fields change').

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

discord_edit_webhookA
Idempotent

Update a webhook's name, avatar, or the channel it posts to. Only provided fields change. Requires the Manage Webhooks permission. Returns a confirmation.

NameRequiredDescriptionDefault
nameNoNew display name for the webhook (max 80 characters).
avatarNoNew avatar image URL for the webhook.
channel_idNoID (snowflake) of a channel to move the webhook to.
webhook_idYesID (snowflake) of the webhook to edit.

TDQS

A4.4/5.0
Behavior4/5

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

The description adds meaningful behavioral context beyond the annotations: the Manage Webhooks permission requirement and the fact that it returns a confirmation. The annotations already signal a non-read-only, idempotent, non-destructive operation, and the description aligns with them—no contradiction.

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

Conciseness5/5

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

Three short sentences, each earning its place: what the tool updates, partial-update semantics, and permission/return details. Information is front-loaded and there is no redundant wording.

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

Completeness4/5

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

For a simple 4-parameter edit tool with full schema coverage and no output schema, the description covers purpose, partial update behavior, permission, and response. It could be more specific about the confirmation's shape, but nothing essential is missing for invocation.

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

Parameters4/5

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

The schema provides 100% coverage with descriptions for all parameters, so the baseline is 3. The description adds value by clarifying that only provided fields change, which is essential for understanding how to use parameters in combination. It does not restate schema details like max length or patterns.

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

Purpose5/5

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

The description states a specific verb ('Update'), a specific resource ('a webhook'), and enumerates the editable fields ('name, avatar, or the channel it posts to'). This clearly distinguishes the tool from siblings like discord_edit_webhook_message (which edits a message sent by a webhook) and discord_delete_webhook.

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

Usage Guidelines4/5

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

The description identifies what the tool does and the partial-update behavior ('Only provided fields change'), so an agent knows it can pass a subset of fields. It does not explicitly name alternatives or say when not to use this tool, but the context is clear enough for this straightforward edit operation.

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

discord_edit_webhook_messageA
Idempotent

Edit a message previously sent through a webhook, using the webhook's ID and token. Replaces the provided fields. Requires the original webhook token. Returns a confirmation.

NameRequiredDescriptionDefault
embedsNoUp to 10 embed objects to attach to the webhook message.
contentNoNew plain-text content for the message (max 2000 characters).
message_idYesID of the webhook message to edit.
webhook_idYesID (snowflake) of the webhook that sent the message.
webhook_tokenYesSecret token of the webhook.

TDQS

A4.2/5.0
Behavior4/5

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

Adds useful behavior beyond annotations: 'Replaces the provided fields' indicates partial replacement rather than full overwrite, and 'Requires the original webhook token' names the authentication prerequisite. Annotations already provide idempotent/read-only/destructive hints, and the description does not contradict them.

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

Conciseness5/5

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

Four short sentences, front-loaded with the core operation and then the required context. There is no filler or unnecessary repetition of schema details; the token emphasis earns its place as an auth requirement.

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

Completeness4/5

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

For a tool with three required parameters and a rich input schema, the description covers the key operational facts: target resource, replacement behavior, authentication need, and return behavior. It could be more complete with explicit sibling exclusions, but it is sufficient for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the individual parameter documentation carries the meaning. The description adds context about replacement semantics and token requirement, but does not explain specific parameters beyond what the schema already provides.

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

Purpose5/5

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

Describes a specific action—editing a webhook-sent message using the webhook's ID and token—and clarifies it operates on a previously sent message. This distinguishes it from siblings like discord_edit_message and discord_edit_webhook.

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

Usage Guidelines4/5

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

Gives a clear use context: edit messages that were sent through a webhook, and states the prerequisite that the original webhook token is required. It does not explicitly name alternatives or exclusion cases, but the webhook-specific scoping makes routing unambiguous.

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

discord_enable_communityA
Idempotent

Turn the Community feature on or off for the server. COMMUNITY is the prerequisite for rules and public-updates channels, membership screening, the welcome screen, onboarding and AutoMod. LIMITATION: Discord requires the server to already have a rules channel and a public-updates channel before Community can be enabled, so create those first (discord_create_channel, then discord_set_guild_channels). Requires Manage Server. Returns the resulting feature list.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the audit log.
enabledYesTrue to enable Community, false to disable it.
guild_idYesDiscord server (guild) ID (snowflake).
rules_channel_idNoRules channel to register while enabling. Required by Discord on first enable.
public_updates_channel_idNoPublic-updates channel to register while enabling. Required on first enable.

Output Schema

NameRequiredDescription
idYes
featuresYes
community_enabledYes
missing_prerequisitesYes
prerequisite_check_onlyYes

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses the hard Discord-side limitation that a rules channel and public-updates channel must exist first, states the Manage Server permission requirement, and notes the return value. The description is consistent with the annotation set (readOnly=false, idempotent=true, destructive=false) – disabling is a reversible config change, so nothing contradicts.

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

Conciseness5/5

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

Dense but every sentence earns its place: the capability, the dependency graph, the blocking limitation, the permission prerequisite, and the return value, in that order. No filler and the critical prerequisite is front-loaded via the LIMITATION marker.

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

Completeness5/5

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

For a toggling tool with an output schema present, the description covers everything the agent needs: preconditions, required permissions, failure conditions, and what comes back. Nothing material is missing.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3; the description adds real value by explaining that rules_channel_id and public_updates_channel_id are required only on the first enable, which the schema phrases ambiguously. It does not explain the audit-log reason field, but that is already well documented in the schema.

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

Purpose5/5

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

States a specific verb (turn on or off) and resource (the Community feature) and scopes it to a server. It is clearly distinct from siblings like discord_get_guild_features or discord_set_guild_channels, which read or configure channels rather than toggle the gate feature.

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

Usage Guidelines5/5

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

Explicitly says what Community gates (rules channel, public updates, screening, welcome screen, onboarding, AutoMod), which tells the agent when this tool is a prerequisite step versus a downstream one. It also names the exact alternative sequence (discord_create_channel, then discord_set_guild_channels) for satisfying the precondition.

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

discord_explain_permissionsA
Read-only

Explain a member's effective permissions in a channel, using Discord's own resolution (base role permissions, then category and channel overwrites, in Discord's order). Reports the resulting allow set, which flags came from overwrites, and any permission that is denied. Read-only. This is the tool to use when someone 'cannot see' or 'cannot post' and the cause is not obvious.

NameRequiredDescriptionDefault
user_idYesMember whose permissions should be explained.
guild_idYesDiscord server (guild) ID (snowflake).
channel_idNoChannel to resolve against. Omit for server-wide (base) permissions.

Output Schema

NameRequiredDescription
notesYes
grantedYes
user_idYes
guild_idYes
channel_idYes
channel_nameYes
denied_by_overwriteYes
relevant_overwritesYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so 'Read-only' is partly redundant, but the description adds real value by disclosing the resolution order (base roles, then category and channel overwrites) and what the response contains (allow set, overwrite-sourced flags, denials). That is meaningful behavioral context 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.

Conciseness5/5

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

Two tight sentences, front-loaded with the core action and the resolution model, ending with the diagnostic use case. Little waste beyond the mildly redundant 'Read-only'.

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

Completeness5/5

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

With an output schema present and annotations covering safety, the description supplies everything an agent needs: what is computed, in what order, what is returned, and the scenario that selects this tool.

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

Parameters3/5

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

Schema coverage is 100% and the schema already documents all three parameters, including 'omit channel_id for server-wide'. The description adds no syntax, format, or edge-case detail beyond what the schema states, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Explain a member's effective permissions in a channel') and adds the resolution semantics that set it apart from a raw permission dump. It doesn't explicitly name the nearest siblings (discord_get_channel_permissions, discord_audit_permissions), so differentiation is implied rather than stated.

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

Usage Guidelines4/5

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

Gives a concrete trigger: use it when someone 'cannot see' or 'cannot post' and the cause is not obvious. That is clear when-to-use guidance, but no when-not or explicit alternative (e.g. use audit_permissions for a broader sweep) is named.

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

discord_export_structureA
Read-only

Export the server's structure as a portable JSON backup: every category and channel with its type, position, topic, slowmode and permission overwrites, plus every role with its permissions. LIMITATION, stated plainly: this backs up structure and permissions, NOT messages. Discord's API cannot enumerate a channel's full history in one call, and this server does not pretend otherwise. The output is a plain JSON document the caller can store; nothing is written to disk by the server. Requires no special permission beyond being able to read the guild. Read-only.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
backupYes
summaryYes

TDQS

A4.1/5.0
Behavior5/5

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

Goes meaningfully beyond the readOnlyHint annotation: it states the permission bar ('no special permission beyond being able to read the guild'), that nothing is written to disk server-side ('the output is a plain JSON document the caller can store'), and explicitly flags the message-history limitation. Those are the exact facts an agent needs before promising a user a full backup.

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

Conciseness4/5

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

Front-loaded with the substance — what is exported — before the limitation, and most sentences carry real information. A few editorializing asides ('stated plainly', 'this server does not pretend otherwise') are filler that could be dropped without losing meaning.

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

Completeness5/5

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

For a one-parameter read tool with an output schema already present, the description covers the remaining burdens: scope of the export, permission requirements, side effects (none to disk), and the message-history limitation. Nothing an agent needs to call this correctly or set user expectations is missing.

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

Parameters3/5

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

One parameter with 100% schema description coverage (snowflake ID with a pattern), so the schema already carries the semantics. The description only implies the guild scope through 'the server's structure' and adds no format or sourcing guidance for guild_id, so the baseline of 3 applies.

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

Purpose4/5

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

Specific verb (export) plus a concrete resource (server structure as portable JSON) and an enumeration of exactly what is captured: categories, channels with type/position/topic/slowmode/overwrites, and roles with permissions. It clearly does not export messages, which separates it from the read/search message tools. It does not distinguish itself from close siblings like discord_architect_read_structure, discord_list_channels or discord_list_roles, which an agent could plausibly pick instead.

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

Usage Guidelines4/5

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

Gives a clear usage context (take a portable backup of structure + permissions) and an explicit exclusion ('NOT messages' with the reason Discord's API cannot enumerate history in one call), which is a real when-not. It never names a preferred alternative for the backup/restore/compare family (discord_restore_structure, discord_compare_structure, discord_architect_read_structure), so the routing is incomplete rather than absent.

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

discord_fetch_pinned_messagesA
Read-only

List all pinned messages in a channel. Returns { messages: [...] } with id, author, content, timestamp, pinnedAt. Read-only. Use discord_pin_message to change which messages are pinned.

NameRequiredDescriptionDefault
channel_idYesID (snowflake) of the channel or thread to list pins from.

Output Schema

NameRequiredDescription
messagesYes

TDQS

A4.3/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes safety, and the description's 'Read-only' line confirms it without adding new behavioral depth. It adds the return shape and pinned-message scope, but does not address pagination, rate limits, permissions, or failure behavior. This is acceptable but not exceptional given annotations already cover the key 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.

Conciseness5/5

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

Three short sentences, each earning its place: the operation, the return shape, and the pointer to the mutation sibling. It is front-loaded with the core purpose and contains no filler or repetition.

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

Completeness5/5

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

For a single-parameter read-only tool with a full input schema and output schema, the description covers everything needed: what it lists, what it returns, that it is safe, and which sibling to use for modifications. No critical information is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter channel_id is already described as a snowflake ID for a channel or thread. The description adds no additional parameter-level meaning, so the schema carries the full weight here, matching the baseline of 3.

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

Purpose5/5

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

The description uses a specific verb and resource: 'List all pinned messages in a channel.' It clearly identifies the tool's scope and differentiates it from mutation tools like discord_pin_message by explicitly stating this is read-only and directing to discord_pin_message for changing pins.

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

Usage Guidelines5/5

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

It explicitly states when to use the tool (to list all pinned messages) and gives an alternative for a related but different need: 'Use discord_pin_message to change which messages are pinned.' This is direct and leaves no ambiguity about the read-only intent.

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

discord_fetch_webhook_messageA
Read-only

Fetch a single message sent through a webhook (id, content, embed count, timestamp), using the webhook's ID and token. Read-only. Requires the original webhook token.

NameRequiredDescriptionDefault
message_idYesID of the webhook message to fetch.
webhook_idYesID (snowflake) of the webhook that sent the message.
webhook_tokenYesSecret token of the webhook.

Output Schema

NameRequiredDescription
idYes
embedsYes
contentYes
timestampYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, and the description reinforces read-only behavior while adding valuable context: the requirement of the original webhook token and a summary of returned data (id, content, embed count, timestamp). No contradiction with annotations.

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

Conciseness5/5

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

A single sentence delivers the operation, resource scope, return summary, read-only nature, and auth requirement with zero filler. Information is front-loaded and easy to scan.

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

Completeness5/5

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

For a simple single-message fetch with 3 fully documented required parameters, an output schema, and safety annotations, the description covers the critical token prerequisite and operation scope. Nothing essential is missing for an agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the individual parameter descriptions already handle semantics. The tool description adds only the nuance that the token must be the 'original' webhook token, which is a minor enhancement over the schema.

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

Purpose5/5

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

Clearly identifies the verb ('Fetch'), the resource ('a single message sent through a webhook'), and the scope ('using the webhook's ID and token'). The parenthetical return fields and the webhook-specific framing distinguish it from sibling tools like discord_read_messages or discord_get_message_attachments.

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

Usage Guidelines4/5

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

States the key prerequisite 'Requires the original webhook token,' which is the primary condition for using this tool. It implicitly differentiates from non-webhook message tools, but does not explicitly name alternatives or when-not-to-use scenarios.

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

discord_find_channel_by_nameA
Read-only

Find channels whose name contains a substring (case-insensitive). Returns matching channels (id, name, type) as a JSON array. Read-only. Useful for resolving a channel_id when you only know the channel's name.

NameRequiredDescriptionDefault
nameYesCase-insensitive substring to match against channel names.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
matchesYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and openWorldHint=true, and the input schema already documents the case-insensitive substring behavior. The description reiterates these rather than adding new behavioral context such as pagination, result limits, or error behavior. It slightly adds by stating the output shape, but with an output schema present that is already structured knowledge.

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

Conciseness5/5

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

Three sentences, each earning its place: the core matching behavior, the return format, and the primary use case. No filler, front-loaded with the most important information, and well-structured for quick agent consumption.

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

Completeness5/5

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

With an output schema present and annotations covering safety, the description provides everything an agent needs to decide when to invoke this tool: what it searches, how matching works, and why it is useful. There are no significant gaps for a simple read-only lookup tool.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; both 'name' and 'guild_id' are fully described in the input schema. The description adds no extra parameter-level meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Find'), a specific resource ('channels'), and a specific filter ('name contains a substring (case-insensitive)'), which clearly distinguishes it from sibling tools like discord_list_channels. It also mentions the return format and read-only nature, making the tool's scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear context for use: 'Useful for resolving a channel_id when you only know the channel's name.' This gives an agent a concrete decision signal. It does not explicitly name alternatives or exclusionary conditions, but the intended scenario is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_find_permission_problemsA
Read-only

Scan a server for permission problems and return each with a fix: channels the bot cannot see, channels where @everyone was denied ViewChannel but the bot has no compensating allow (a classic lockout), overwrites that deny Send Messages to @everyone in channels that look public, roles with Administrator that are not the bot's own, and members whose highest role is above the bot's. Read-only.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
okYes
guild_idYes
problemsYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description's enumeration of exactly which conditions constitute a 'problem' (invisible channels, @everyone lockouts, public-channel Send Messages denies, foreign Administrator roles, hierarchy overreach) is substantive behavioral disclosure of scan scope. It stops short of noting cost, rate limits, or that a full scan may be slow across large guilds.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence plus a two-word safety tag; the headline purpose is front-loaded before the enumeration. Slightly long but nearly every clause carries distinct information (the five detection categories), so little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a single required param, an output schema, and readOnly/openWorld annotations, the description only needs to explain what the scan looks for, which it does thoroughly including the 'returns a fix' promise. Missing only operational context such as required bot permissions or scanning scope/time.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, guild_id, and schema description coverage is 100% with a documented snowflake pattern, so the schema already carries the semantics. The description adds nothing about the parameter; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('scan a server for permission problems') followed by an explicit enumeration of the five problem classes it detects, which goes well beyond restating the name. It is clearly distinguishable from narrower siblings like discord_explain_permissions, though it never names the sibling it might be confused with (discord_audit_permissions).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case (diagnostic scan of a whole guild) is implied by the enumeration of checks, but there is no explicit guidance on when to prefer this over discord_audit_permissions or discord_explain_permissions, nor any prerequisites (bot must be a member, admin scope needed).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_follow_announcement_channelA

Subscribe a target channel to an announcement (news) channel, so the source's published messages are reposted into the target. The source must be an announcement channel. Requires the Manage Webhooks permission in the target. Returns a confirmation.

NameRequiredDescriptionDefault
source_channel_idYesID (snowflake) of the announcement channel to follow.
target_channel_idYesID (snowflake) of the channel that will receive published messages.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a non-read-only, non-idempotent operation, so the bar for additional disclosure is lower. The description adds useful behavioral context: it requires Manage Webhooks in the target, causes published messages to be reposted, and returns a confirmation. It does not detail edge cases like duplicate follows, but that is not a major gap given 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences front-load the core action and effect, then state prerequisites and the return value. No filler or redundant details; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no output schema, this description is sufficient: it explains the operation, the required permission, the source constraint, and the response. An agent can invoke it correctly without needing additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's prose reinforces that the source must be an announcement channel and the target receives published messages, but it does not add substantial parameter-level meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Subscribe') and identifies the precise resource relationship: a target channel follows an announcement channel. It clearly distinguishes this from sibling tools like discord_crosspost_message by describing the subscription/reposting behavior rather than one-off publishing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states the key precondition ('source must be an announcement channel') and the required permission ('Manage Webhooks'). It does not explicitly name alternatives or say when not to use this tool, but the context is clear enough for an agent to understand the appropriate scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_forward_messageA

Forward an existing message to another channel using Discord's native forward, which preserves the original attribution. Works across text channels and threads. Use discord_send_message to compose new content instead. Requires the Send Messages permission in the target channel. Returns a confirmation.

NameRequiredDescriptionDefault
channel_idYesID (snowflake) of the channel or thread containing the source message.
message_idYesID of the message to forward.
target_channel_idYesID (snowflake) of the destination channel or thread.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide only basic flags (readOnlyHint=false, destructiveHint=false), so the description carries the burden of explaining behavior. It adds genuine value: the attribution-preservation trait of the native forward, the permission requirement, and the return behavior ('Returns a confirmation'). No contradiction with annotations exists; it could have gone further by noting failure modes, but it covers the key behavioral traits well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences with zero filler: the core action and its defining trait come first, followed by scope, the routing alternative, and the prerequisite. Every sentence earns its place, and the return-value note is justified because there is no output schema to convey that information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter tool with no output schema, the description covers all essential decision and invocation information: what it does, where it works, the required permission, the return behavior, and the sibling to choose instead. It is slightly shy of perfect only because it omits edge-case caveats (e.g., restrictions on forwarding certain message types), but nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents all three parameters (channel/thread context, message ID, destination). Per the baseline rule, the description need not repeat parameter details. The small additions it makes — 'Works across text channels and threads' — merely confirm what the schema already states, so no compensatory credit is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Forward an existing message to another channel') and adds the distinctive mechanism ('Discord's native forward, which preserves the original attribution'), which separates it from ordinary message-sending. It also explicitly names discord_send_message as the sibling it is not, making the purpose unmistakable even among 80+ sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit when-to-use (forwarding an existing message with attribution) and a when-not-to-use with a named alternative ('Use discord_send_message to compose new content instead'). It also states the operational prerequisite ('Requires the Send Messages permission in the target channel'), which is exactly the kind of precondition an agent needs before invoking.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_audit_logA
Read-only

Fetch the server's audit log, the record of administrative actions (bans, kicks, role/channel changes, etc.) with who performed them and when. Requires the View Audit Log permission. Returns { entries: [...] } with id, action, executor, target, reason, createdAt. Read-only.

NameRequiredDescriptionDefault
limitNoHow many recent entries to fetch (1–100). Default 25.
guild_idYesDiscord server (guild) ID (snowflake).
action_typeNoOptional Discord AuditLogEvent numeric ID to filter by (e.g. 22 = MemberBanAdd). Accepts event IDs newer than the bundled enum. Omit for all action types.

Output Schema

NameRequiredDescription
entriesYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description reinforces the safety profile with 'Read-only' plus the required 'View Audit Log' permission. It also pre-announces the return envelope ({ entries: [...] } with named fields), which is behavioral value beyond annotations; only pagination/cursor behavior is unaddressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: what it is, what it needs, what it returns. No redundancy, and the core purpose is front-loaded in the first clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, permission prerequisite, and return shape even though an output schema exists, so an agent can call it confidently. The missing piece is disambiguation from the similarly named discord_read_audit_trail sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so guild_id, limit, and action_type are already fully documented, including the enum and the 'newer than the bundled enum' note. The description adds nothing about parameters, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Fetch the server's audit log') and enumerates the content type (bans, kicks, role/channel changes, executor, timestamp). It's clear and concrete, but it never distinguishes itself from the sibling discord_read_audit_trail, which an agent could easily confuse with this Discord audit log.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The prerequisite ('Requires the View Audit Log permission') is stated, which is useful context, but there is no explicit when-to-use guidance or exclusion vs. alternatives such as discord_read_audit_trail. Usage is only implied by the description of contents.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_automod_ruleA
Read-only

Fetch one AutoMod rule by ID with its full trigger configuration and actions. Requires Manage Server. Read-only.

NameRequiredDescriptionDefault
rule_idYesID of the AutoMod rule.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
nameYes
actionsYes
enabledYes
presetsYes
keywordsYes
allow_listYes
creator_idYes
event_typeYes
trigger_typeYes
regex_patternsYes
exempt_role_idsYes
exempt_channel_idsYes
mention_total_limitYes
mention_raid_protectionYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so 'Read-only' is redundant, but the description adds the meaningful authorization requirement (Manage Server) that is not captured in annotations. What is returned (trigger configuration and actions) is also hinted, though return shape is left to the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written clauses with zero waste; the core action and scope are front-loaded, followed by the permission note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return values, and it covers action, scope, and permission requirement. Complete for a simple two-param read tool, though it doesn't address error or not-found behavior, which is minor here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both guild_id and rule_id are already fully documented in the schema. The description adds only the notion of fetching 'by ID' and provides no syntax or format details beyond the structured data. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Fetch) and resource (one AutoMod rule) with scope (by ID, including full trigger configuration and actions). The 'one ... by ID' framing distinguishes it from list_automod_rules and the create/edit/delete siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear prerequisite ('Requires Manage Server') that guides when the call is valid. However, it does not explicitly name alternatives like list_automod_rules for the case where the ID is unknown, leaving selection partially to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_bot_identityA
Read-only

Report the bot's own identity, distinguishing the things that are commonly confused: its global username and avatar (which apply in every server), its per-server nickname and per-server avatar in this guild, and the owning application's name and ID. Read-only. Use this before changing anything so you know which of the four you actually mean.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
notesYes
guild_idYes
guild_nameYes
bot_user_idYes
guild_avatarYes
global_avatarYes
application_idYes
guild_nicknameYes
global_usernameYes
application_iconYes
application_nameYes
guild_display_nameYes
can_change_nicknameYes
global_display_nameYes
application_descriptionYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The 'Read-only' sentence merely restates readOnlyHint=true and earns no credit, but the description adds real behavioral context beyond annotations: it explains that identity splits into global scope vs. per-server scope, and that the per-server nickname/avatar is resolved 'in this guild' by guild_id. It omits permissions requirements and failure modes, which keeps it below 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and the four-facet breakdown is the substantive core. The intervening 'Read-only.' sentence duplicates the annotation and is the one line that does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with a full output schema and readOnly annotations, the description covers purpose, scope semantics, and pre-change usage. Nothing an agent needs to invoke it correctly is missing, though it could note that per-server fields are null outside a guild.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter at 100% schema description coverage ('Discord server (guild) ID (snowflake)'), the schema already carries the semantics. The description only implicitly hints that guild_id selects the per-server identity fields, adding marginal value over the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Report the bot's own identity.' It then decomposes that identity into four clearly named facets (global username/avatar, per-server nickname/avatar, application name/ID), which distinguishes it from siblings like discord_get_guild_info or discord_get_bot_permissions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this before changing anything so you know which of the four you actually mean' gives a clear activation context tied to the identity-mutating siblings (discord_set_bot_nickname, discord_set_bot_avatar, discord_set_bot_username, discord_set_application_icon). It stops short of naming those alternatives or stating when not to call it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_bot_permissionsA
Read-only

Report what this bot can and cannot do in a server: its server-wide permissions, its role position versus the server owner, and whether it holds each permission the other tools in this server depend on. Read-only. Call this when a tool fails with 'Missing permissions' to find out which permission to grant.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
bot_idYes
guild_idYes
is_ownerYes
guild_nameYes
permissionsYes
highest_roleYes
has_all_requiredYes
bot_role_positionYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description enumerates what the report contains — server-wide perms, role position versus owner, and whether each permission other tools depend on is held — which tells an agent what diagnostic signal it gets back. The 'Read-only' sentence merely repeats the annotation, but the diagnostic framing adds real value. It does not mention rate limits or whether the report evaluates channel-level overrides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what the tool reports, then the safety profile, then the trigger. Every sentence carries information an agent uses; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full parameter coverage, the description covers purpose, contents, safety, and the failure-recovery trigger adequately. The one remaining gap is routing: an agent cannot tell from this text why it should prefer this tool over the several other permission-diagnostic siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single guild_id parameter is documented with format constraints in the schema, so the description need not elaborate. It adds no parameter-level guidance beyond what the schema already provides, matching the baseline for high-coverage schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource plus the exact scope of what is reported (server-wide permissions, role position vs. owner, per-permission checks), which an agent can distinguish from generic permission tools. However, it never distinguishes itself from close siblings like discord_check_tool_permissions, discord_explain_permissions, or discord_find_permission_problems, which occupy adjacent territory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger: call this when another tool fails with 'Missing permissions'. That is a clear when-to-use condition. It stops short of naming alternatives or stating when another permission tool (explain_permissions, find_permission_problems) would be the better choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_bot_profile_limitsA
Read-only

Explain, from the live client state, exactly which parts of the bot's profile this server can and cannot change, and why. Read-only. Use this when asked to change the bot's banner, its 'about me', or anything else Discord does not expose to bot accounts: the answer is a documented limitation, not a missing tool.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
changeableYes
not_changeableYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true and openWorldHint=false already declare the safety profile, so 'Read-only' is restated rather than added. What the description does contribute is the source of truth ('from the live client state') and the semantic framing that the result is a documented limitation rather than an absence of tooling. Return shape is covered by the output schema, so no gap there.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both front-loaded with the operative information (what it explains, then when to reach for it). The closing 'documented limitation, not a missing tool' clause is behavioral guidance an agent needs, not filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-arg, read-only introspection tool with an output schema and annotations already covering safety, this is complete: purpose, trigger, data source, and interpretation of the result are all present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero-parameter tool, so no parameter meaning is required; baseline 4 applies. The description correctly implies the only input is the ambient server/bot context, with no argument needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: explains, from live client state, which profile parts this server can/cannot change and why. This clearly separates it from the setter siblings (discord_set_bot_avatar, discord_set_bot_username, discord_set_bot_guild_avatar) and from discord_get_bot_identity, which reports identity rather than limits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('when asked to change the bot's banner, its "about me", or anything else Discord does not expose to bot accounts') and states the expected outcome so the agent does not fall through to a nonexistent setter. Explicit when-to-use plus an alternative interpretation of the failure case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_channel_permissionsA
Read-only

List every permission overwrite on a channel, per role and per member, with the allowed and denied permission flags for each. Read-only. Use discord_audit_permissions for a server-wide report across all channels.

NameRequiredDescriptionDefault
channel_idYesID (snowflake) of the channel to inspect.

Output Schema

NameRequiredDescription
overwritesYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, and the description adds meaningful behavioral detail beyond that: it discloses the exact structure of results (per role and per member, allowed and denied flags) and the comprehensive 'every permission overwrite' scope. This is useful context that annotations alone do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with no filler. The core behavior is front-loaded first, the read-only property is stated briefly, and the alternative routing is in the second sentence. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only listing tool with an output schema present, this description is complete. It covers scope, result granularity, safety, and the main alternative tool. Nothing that an agent needs to select or invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for channel_id, including its snowflake pattern and purpose. The description only refers to 'a channel' generically, so it adds little beyond the schema. A baseline of 3 is appropriate because the schema already carries the parameter documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb ('List') and resource ('every permission overwrite on a channel'), and clearly explains the granularity: per role and per member, with allowed and denied flags. It differentiates itself from discord_audit_permissions by explicitly naming that sibling, so an agent can distinguish the tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly provides the alternative tool ('discord_audit_permissions') and the condition that should trigger its use ('server-wide report across all channels'). This gives clear routing guidance without needing to infer from tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_event_subscribersA
Read-only

List the users who marked themselves 'Interested' in a scheduled event. Returns { subscribers: [...], nextCursor }. A page holds up to 100 users; if nextCursor is non-null, pass it back as after to fetch the next page. Read-only.

NameRequiredDescriptionDefault
afterNoPagination cursor: a user ID (snowflake). Pass the previous response's nextCursor to fetch the next page.
limitNoMax subscribers per page (1–100). Default 25.
event_idYesID (snowflake) of the scheduled event.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
nextCursorYes
subscribersYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so 'Read-only' adds little. However, the description goes beyond annotations by disclosing the page size cap (up to 100), the return shape, and the exact cursor round-trip protocol, which is real operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with the purpose front-loaded and pagination immediately after. The '{ subscribers: [...], nextCursor }' return sketch is mildly redundant given an output schema exists, but it is short enough not to be waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full parameter coverage, the main remaining risk an agent faces is pagination, and that is fully explained. Missing only secondary details such as required bot permissions or the shape of each subscriber entry, which the output schema likely covers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already defines guild_id, event_id, after (with the snowflake pattern), and limit (1-100, default 25). The description's notes on 'after' and the 100-user page size largely restate the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource+qualifier: list users who marked themselves 'Interested' in a scheduled event. That scope distinguishes it from discord_get_scheduled_event and discord_list_scheduled_events, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the pagination instruction ('if nextCursor is non-null, pass it back as after') tells the agent how to continue but not when to reach for this tool over the other scheduled-event tools. No exclusions or alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_forum_channelsA
Read-only

List the forum channels in a server (id, name, topic, parent category). Read-only. Use discord_get_forum_tags to see a forum's available tags, or discord_list_forum_threads for its posts.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
channelsYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The 'read-only' claim merely restates readOnlyHint=true. It does add the shape of returned items (id, name, topic, parent category), but with annotations already covering the safety profile and an output schema present, there is no extra context on scope, pagination, or limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler: the scoping and returned fields are front-loaded, followed by the sibling routing. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering safety, a fully documented single parameter, and an output schema handling return values, the description is nearly complete. It could note volume/pagination expectations for a server-wide list, which is the only remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, guild_id, and the schema documents it at 100% coverage including the snowflake pattern. The description adds nothing about the parameter, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the forum channels in a server') and enumerates the returned fields, which lets an agent distinguish this from discord_list_channels and the forum-sibling tools without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes to alternatives for adjacent tasks: discord_get_forum_tags for a forum's tags and discord_list_forum_threads for its posts. It does not address how this differs from the broader discord_list_channels, so the sibling separation is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_forum_postA
Read-only

Get a forum post's details (title, archived/locked state, applied tags, message count) plus its recent messages, oldest-to-newest. Read-only. Pass the post's thread_id. Returns a JSON object.

NameRequiredDescriptionDefault
limitNoHow many recent messages to include (1–100). Default 20.
thread_idYesID (snowflake) of the forum post (thread).

Output Schema

NameRequiredDescription
idYes
nameYes
lockedYes
archivedYes
messagesYes
createdAtYes
appliedTagsYes
messageCountYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description repeats 'Read-only' without adding safety context. It does add useful behavioral detail about message ordering ('oldest-to-newest') and the included post fields, but it omits pagination behavior, permission requirements, and rate-limit considerations beyond what the schema provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and efficient, covering purpose, fields, ordering, and usage in three short sentences. 'Returns a JSON object' is mildly redundant given the output schema, and 'Read-only' repeats the annotation, but neither bloats the definition significantly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full input schema, an output schema, and read-only annotations, the description gives enough context to call the tool correctly: what it returns, the required thread_id, and message ordering. It stops short of routing the agent among sibling forum tools, but that is the main remaining gap for a low-complexity read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters, including the thread_id snowflake pattern and limit range. The description only reinforces passing the thread_id and implies recent-message limiting; it adds no syntax or format details beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: get a forum post's details plus its recent messages. It lists the exact fields returned (title, archived/locked state, applied tags, message count), which distinguishes it from generic message reading and forum-post listing tools. An agent can tell what this tool does 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by requiring a thread_id and noting the tool is read-only, but it does not explicitly say when to use this versus siblings like discord_list_forum_threads or discord_read_messages. No alternatives or exclusions are named, leaving selection guidance to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_forum_tagsA
Read-only

List the tags available on a forum channel (id, name, emoji, moderated flag). Read-only. Use these IDs with discord_create_forum_post or discord_update_forum_post; manage the tag set with discord_set_forum_tags.

NameRequiredDescriptionDefault
forum_channel_idYesID (snowflake) of the forum channel to read tags from.

Output Schema

NameRequiredDescription
tagsYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so 'Read-only' largely restates structured data. The listed return fields duplicate what the output schema already provides, and there is no mention of permission requirements or behavior on a non-forum channel — modest added value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and the returned shape, then read-only status, then sibling routing. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema covering the return fields and annotations covering the safety profile, the description needs only to explain the action and the follow-on workflow, which it does. Minor gap: no note on required permissions or what an empty tag set looks like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (forum_channel_id) at 100% schema coverage, with the snowflake pattern documented in the schema. The description does not restate or add meaning to it, which is acceptable at this coverage level but not additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb + resource ('List the tags available on a forum channel') plus the exact fields returned (id, name, emoji, moderated flag). It is unambiguously distinguishable from discord_set_forum_tags, which is named as the mutation counterpart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: use retrieved IDs with discord_create_forum_post / discord_update_forum_post, and use discord_set_forum_tags to manage the tag set. Both the consumption path and the write alternative are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_guild_featuresA
Read-only

List the server's feature flags with a plain-language explanation of the ones that gate this server's tools (COMMUNITY, DISCOVERABLE, BANNER, INVITE_SPLASH, VANITY_URL, ANIMATED_ICON, ANIMATED_BANNER, ROLE_ICONS, NEWS, FORUM_CHANNEL_ENABLED, MEMBER_VERIFICATION_GATE_ENABLED, AUTO_MODERATION) and which are currently active. Also reports which settings are therefore editable. Read-only. Use this before attempting a setting that may be feature-gated.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
featuresYes
capabilitiesYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true and openWorldHint=true, so 'Read-only' merely restates structured data. The description does earn credit beyond that by disclosing the exact flag set it inspects and the derived output (which settings are therefore editable), which tells the agent how to interpret the result before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action, then the enumeration, then the call-to-action 'Use this before...' at the end where it is most likely to be read as a directive. The 13-flag list is long but is the substantive content of the tool, so it is mostly earned; the parenthetical could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not document return shapes, and it wisely sticks to intent and usage. What is slightly missing is whether the bot needs specific permissions or what happens if the bot lacks access (openWorldHint=true), which matters for a call against a live guild.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema coverage, including type, snowflake pattern and a description, so the schema fully documents it. The prose adds nothing about guild_id, so the baseline of 3 applies rather than a higher score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the server's feature flags') and goes further by naming exactly which flags it covers and what else is returned (active state, editable settings). It is clearly distinguishable from neighbours like discord_get_guild_info or discord_get_guild_settings, which fetch general server metadata rather than the feature-flag gating model.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this before attempting a setting that may be feature-gated', which gives the agent a concrete trigger condition. It does not name a when-not case or point to an alternative tool for the opposite situation, so it stops short of full 5-level guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_guild_infoA
Read-only

Get details about one server: name, description, member/channel/role counts, boost tier, owner, and creation date. Read-only. Use discord_get_server_stats for a finer breakdown (humans vs bots, channel types).

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
nameYes
ownerYes
createdAtYes
roleCountYes
boostCountYes
boostLevelYes
descriptionYes
memberCountYes
channelCountYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description's 'Read-only' merely restates that. Beyond the annotation, the description adds the shape of the returned metadata, but with an output schema present that content is largely redundant rather than new behavioral context (no rate limits, permission requirements, or failure modes).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the capability and its return fields are front-loaded, followed by the disambiguation pointer. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema covering return values, annotations covering the safety profile, and a fully documented single parameter, the definition is nearly complete. The only gap is operational context (bot-membership/permission requirements for reading a guild), which an agent would need in edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single guild_id parameter is fully documented as a snowflake with a pattern constraint. The description adds no further meaning about the identifier (e.g., where to obtain it), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (Get) and resource (details about one server) and enumerates exactly which fields come back (name, description, counts, boost tier, owner, creation date). This is clearly distinguishable from the stats-oriented sibling it names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to discord_get_server_stats for a finer breakdown (humans vs bots, channel types), which is real when-to-use guidance. It stops short of covering the other obvious alternative, discord_list_guilds, and gives no prerequisites such as the bot needing to be in the guild.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_guild_previewA
Read-only

Fetch the public preview of a server: approximate member and online counts, description, icon, splash, emojis, stickers and features. Works without being a member, but Discord only serves a rich preview for servers that are discoverable or have Community enabled. Read-only.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
iconYes
nameYes
splashYes
featuresYes
descriptionYes
emoji_countYes
sticker_countYes
approximate_member_countYes
approximate_presence_countYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnlyHint and openWorldHint, so 'Read-only' adds nothing; the real value is the disclosure that non-discoverable / non-Community servers return only a thin preview. That is exactly the kind of behavioral caveat annotations cannot express, though it doesn't say whether that manifests as an error or partial payload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences: payload contents first, then the availability constraint. Nothing redundant beyond the annotation-repeating 'Read-only' tail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and full annotation coverage, the description supplies the one thing structured fields miss — the discoverability/Community prerequisite for a rich preview. Only the exact degraded-response behavior is left unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single required parameter with 100% schema coverage including a snowflake pattern, so the schema carries the load. The description adds no parameter-level detail, which is acceptable at this coverage level.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb + resource ('Fetch the public preview of a server') plus an enumeration of returned fields (member/online counts, description, icon, splash, emojis, stickers, features). It implicitly distinguishes itself from the fuller discord_get_guild_info via the 'public preview' framing, but never names that sibling, so an agent must infer the split.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Works without being a member, but Discord only serves a rich preview for servers that are discoverable or have Community enabled' gives a concrete precondition and implies the failure mode. It stops short of explicitly routing to discord_get_guild_info when richer data is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_guild_settingsA
Read-only

Read every server-level setting in one call: name, description, icon/banner/splash URLs, owner, preferred locale, verification level, explicit content filter, default notification level, MFA requirement, NSFW level, boost tier, system/rules/public-updates/safety-alerts/AFK channel slots, AFK timeout, the full feature list, whether Community is enabled, and the vanity URL code. Read-only. Use this before any change so you know the current values, and use the targeted discord_set_* tools to change them.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
iconYes
nameYes
bannerYes
splashYes
featuresYes
owner_idYes
mfa_levelYes
nsfw_levelYes
afk_timeoutYes
descriptionYes
member_countYes
premium_tierYes
afk_channel_idYes
vanity_url_codeYes
discovery_splashYes
preferred_localeYes
rules_channel_idYes
community_enabledYes
system_channel_idYes
verification_levelYes
explicit_content_filterYes
safety_alerts_channel_idYes
public_updates_channel_idYes
approximate_presence_countYes
premium_subscription_countYes
premium_progress_bar_enabledYes
default_message_notificationsYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description is consistent ('Read-only'), so no contradiction. It adds useful context beyond annotations: single-call completeness and the pre-mutation snapshot role. It stops short of noting permissions needed or response shape, which the output schema partly covers anyway.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core intent and the read-only/workflow guidance are front-loaded, and the field enumeration earns its length by defining coverage. The middle enumeration is dense and could be trimmed, but it is functional rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, full param coverage, and annotations covering the safety profile, the description supplies everything else an agent needs: complete field scope and the sequencing relative to discord_set_* tools. No material gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single required guild_id with a snowflake pattern and 100% schema description coverage, so the schema carries the semantics. The description adds nothing parameter-specific but nothing is missing; baseline 4 applies for a fully documented one-param schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and scope ('Read every server-level setting in one call') and then enumerates the concrete fields returned, so the agent knows exactly what resource surface this covers. It is distinguishable from narrower reads like discord_get_guild_info or discord_get_guild_features by the exhaustive field list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the workflow: 'Use this before any change so you know the current values,' and names the alternative tool family ('targeted discord_set_* tools') for mutation. That is a clear when-to-use plus a named alternative, which is what this dimension rewards.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_guild_vanity_urlA
Read-only

Read the server's vanity invite URL, the custom discord.gg link. Requires the VANITY_URL feature. Read-only. Use discord_get_guild_features to check whether the feature is active first.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
urlYes
codeYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description usefully adds the feature-gating prerequisite that annotations cannot express. It stops short of saying what happens if the feature is missing (error vs. null return), which would have made it fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each doing distinct work: purpose, prerequisite, safety, and the pre-check routing. Front-loaded with the definition and no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, the only parameter is fully documented in schema, and the description covers the one non-obvious hazard (feature gating) plus a verification path. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single guild_id parameter with 100% schema description coverage including a snowflake pattern, so the schema carries the parameter semantics. The description adds nothing about the ID itself, which is acceptable at this coverage level.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read the server's vanity invite URL') and defines the term inline ('the custom discord.gg link'), which distinguishes it from the many invite-related siblings like discord_get_invite and discord_list_invites.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the prerequisite ('Requires the VANITY_URL feature') and routes the agent to a specific sibling ('Use discord_get_guild_features to check whether the feature is active first'), giving both the condition and the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_guild_widgetA
Read-only

Read the server's widget settings and, when the widget is enabled, the public widget.json and widget image URLs. The JSON endpoint is readable by anyone who has the URL, so this tool reports exactly what it exposes. Read-only.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
enabledYes
channel_idYes
widget_json_urlYes
widget_image_urlYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds meaningful context beyond annotations by noting the conditional behavior when the widget is enabled and explaining that the JSON endpoint is publicly readable, which matters for privacy expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core read action and followed by the important conditional/public-exposure caveat. There is no redundant restatement of the tool name or schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, has a fully described single parameter, and an output schema, so the description needn't explain return values. It covers the key behavioral nuance: widget data is returned only when enabled, and the JSON endpoint is publicly readable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter, guild_id, and the schema already documents it at 100% coverage with a snowflake pattern. The description does not add syntax or selection guidance beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair: 'Read the server's widget settings' and adds the exact outputs returned when the widget is enabled ('public widget.json and widget image URLs'). This clearly distinguishes it from the mutation sibling discord_set_guild_widget and from general guild-info tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for use: it is the read side of widget inspection and reports what the public JSON endpoint exposes. It does not explicitly say to use discord_set_guild_widget for changes, but the read-only framing and sibling name make the alternative reasonably inferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_inviteA
Read-only

Look up a single invite by its code: target server and channel, inviter, and expiry. Works for any public invite, but this endpoint never returns usage counters (uses/max_uses/max_age read 0); use discord_list_invites or discord_list_channel_invites for real counters. Read-only. Returns a JSON object.

NameRequiredDescriptionDefault
invite_codeYesThe invite code, e.g. 'abc123'. A full discord.gg/abc123 URL is also accepted and stripped.

Output Schema

NameRequiredDescription
urlYes
codeYes
usesYes
inviterYes
max_ageYes
guild_idYes
max_usesYes
temporaryYes
channel_idYes
created_atYes
expires_atYes
guild_nameYes
channel_nameYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description still adds real value by disclosing the counters quirk (uses/max_uses/max_age always 0) and the 'any public invite' scope, which an agent could not infer from 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no filler: what it returns first, the limitation plus the alternative second, then a short type/safety line. Front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and annotations cover read-only/open-world. The description supplies the counter caveat and scope. Minor gap: no statement on what happens for invalid or expired codes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter already documents the code format and the full discord.gg URL stripping. The description only restates 'by its code', adding nothing beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('look up') plus resource ('a single invite by its code') and a preview of what the response contains (target server/channel, inviter, expiry). This clearly distinguishes it from discord_list_invites, discord_create_invite and discord_delete_invite among the large sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the boundary: use discord_list_invites or discord_list_channel_invites when real usage counters are needed, because this endpoint returns zeros. That is a genuine routing rule. It does not cover private/expired-code behavior, so it falls just short of a full when/when-not statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_member_infoA
Read-only

Get full details for one server member: roles, effective permissions, account/join dates, bot flag, and current timeout status. Read-only. Returns a JSON object.

NameRequiredDescriptionDefault
user_idYesDiscord user ID (snowflake) of the member.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
botYes
rolesYes
joinedAtYes
nicknameYes
usernameYes
createdAtYes
permissionsYes
timedOutUntilYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's 'Read-only' line adds nothing, and 'Returns a JSON object' is trivial given an output schema exists. The field enumeration (roles, effective permissions, timeout status) is genuinely useful context for what the call surfaces, but nothing is said about permissions required to view members or when the call fails (e.g. member not in guild).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the payload contents. 'Read-only. Returns a JSON object.' is largely redundant against the annotations and output schema, so not every sentence earns its place, but there is no bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-param read tool with full schema coverage, annotations, and an output schema, the definition covers what the call returns well enough to invoke correctly. The remaining gap is failure/permission context, which is minor relative to the rich structured metadata.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (user_id, guild_id) are documented as snowflakes in the schema, so baseline 3 applies. The description adds no meaning beyond the schema – it never reinforces that both IDs are required to scope the lookup.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get full details for one server member') and enumerates the payload ('roles, effective permissions, account/join dates, bot flag, and current timeout status'). The 'one member' framing cleanly separates it from discord_list_members and discord_search_members without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the phrase 'for one server member' – there is no explicit when-to-use, no mention of prerequisites (e.g. intents or permissions needed to read a member), and no routing to the list/search siblings for bulk lookups. An agent can infer the single-member case but is given no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_membership_screeningA
Read-only

Fetch the server's membership screening form, the rules/questions new members must accept before gaining access. Requires the server to have the Community feature enabled. Read-only. Returns the form as JSON, including its version.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
versionYes
descriptionYes
form_fieldsYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so 'Read-only' is largely redundant, but the description adds real behavior the annotations do not cover: the Community-feature prerequisite and the fact that the response is a JSON form object carrying a version field. That version note is practical context for subsequent update calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and the domain meaning, followed by the constraint and return shape. No filler or restated title material.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read with a full output schema and readOnly annotations, the description supplies everything an agent still needs: the concept, the prerequisite, and the response nature. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema coverage is 100% ('Discord server (guild) ID (snowflake)', pattern included), so the schema fully documents it. The description adds nothing about guild_id, which is fine but not additive – baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Fetch the server's membership screening form') and defines the domain concept ('the rules/questions new members must accept'). It does not name its write counterpart discord_update_membership_screening or discord_set_membership_gate, so an agent must infer the read/write split from the verb alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides one useful precondition ('Requires the server to have the Community feature enabled'), which implicitly tells the agent when the call will fail. It never routes the agent between this tool and the siblings that modify the same screening form or gate, leaving the choice to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_message_attachmentsA
Read-only

List the file attachments of a message. Returns { attachments: [...] } with id, filename, title (the original name when Discord strips non-ASCII from filename), url, proxyUrl, contentType, size in bytes, width, height, alt-text description, voice-message duration and waveform, spoiler flag. Discord signs CDN urls with a 24-hour expiry and does not re-sign on every fetch; re-call this tool if a stored url has expired. Requires the View Channel and Read Message History permissions. Read-only. Use discord_read_messages to find messages with attachments.

NameRequiredDescriptionDefault
channel_idYesID (snowflake) of the channel or thread containing the message.
message_idYesID of the message whose attachments to list.

Output Schema

NameRequiredDescription
attachmentsYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnlyHint annotation by stating the required permissions (View Channel and Read Message History) and disclosing the non-obvious CDN behavior: urls carry a 24-hour signed expiry and are not re-signed on fetch, so cached urls can go stale. That expiry caveat is exactly the kind of operational trait an agent cannot infer from 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and the permission/expiry caveats are short and high-value. The one weak spot is the long run-on enumeration of return fields (id, filename, title, url, proxyUrl, contentType, ...), which largely restates the output schema rather than adding information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with an output schema and readOnly annotation, the description covers purpose, permissions, sibling routing, and the one genuinely surprising behavior (url expiry). Nothing an agent needs to call or interpret this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both channel_id and message_id are already documented, including snowflake patterns and the channel-or-thread ambiguity. The description adds no further meaning about these parameters, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('List the file attachments of a message'), which is unambiguous and distinct from siblings like discord_read_messages or discord_fetch_pinned_messages. An agent can identify the correct tool without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to discord_read_messages to find messages with attachments, and gives a concrete re-invocation rule ('re-call this tool if a stored url has expired'). It lacks a 'when not to use' clause, but the positive routing is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_onboardingA
Read-only

Read the server's onboarding configuration: whether it is enabled, its mode (default or advanced), the default channels new members land in, and every onboarding prompt with its options, each option's channels and roles. Requires the COMMUNITY feature. Read-only. Use discord_set_onboarding to change it.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
modeYes
enabledYes
promptsYes
default_channel_idsYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, but the description adds non-obvious context: the COMMUNITY feature requirement (a hard precondition that can make the call fail) and a preview of the returned structure. It stops short of describing error behavior or what happens when onboarding is disabled, keeping it from 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler: the first front-loads what is returned, the second carries the prerequisite, the read-only confirmation, and the alternative tool. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return shape need not be spelled out, yet the description still sketches it, and the one parameter is covered by the schema. For a single-param read tool, the prerequisite plus alternative pointer leaves no gap an agent needs filled before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single guild_id parameter is fully documented with type and snowflake pattern in the schema. The description never references guild_id or adds semantics beyond it, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Read') and resource ('server's onboarding configuration') and then enumerates the exact contents returned: enabled flag, mode, default channels, and every prompt with options/channels/roles. That level of specificity makes it unmistakable against siblings like discord_get_welcome_screen or discord_get_guild_settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit prerequisite ('Requires the COMMUNITY feature') and names the mutation counterpart ('Use discord_set_onboarding to change it'), so an agent knows both the gating condition and the alternative. Nothing about when to select this tool is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_reactionsA
Read-only

List the users who reacted to a message with a specific emoji. Returns { reactions: [...] } with id, username, bot flag. Read-only.

NameRequiredDescriptionDefault
emojiYesUnicode emoji or custom emoji 'name:id' to list reactors for.
limitNoMax users to return (1–100). Default 25.
channel_idYesID (snowflake) of the channel or thread containing the message.
message_idYesID of the message to inspect.

Output Schema

NameRequiredDescription
reactionsYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description repeats 'Read-only' and mentions the return shape. It does not add deeper behavioral context such as pagination behavior, rate limits, or what happens when no users have reacted, though the annotations and output schema cover the safety and return aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words; the main purpose is front-loaded and the additional read-only note is brief.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with a full input schema and an output schema, the description provides enough context for correct invocation. No important behavioral or invocation detail is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented. The description adds no additional parameter semantics beyond what the schema provides, matching the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') tied to a clear resource (users who reacted to a message with a specific emoji). It also distinguishes itself from reaction-mutating siblings like discord_add_reaction and discord_remove_reactions by emphasizing a read-only listing operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear context of when to call this tool: to inspect which users reacted to a message with a given emoji. It does not explicitly name alternatives or exclusion conditions, but the read-only framing implicitly rules out mutation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_role_membersA
Read-only

List members who currently hold a specific role, scanning up to 20,000 members. Returns { members: [...], truncated }; check truncated on very large servers. Read-only. Use discord_list_roles to discover role IDs first.

NameRequiredDescriptionDefault
role_idYesID (snowflake) of the role to list holders of.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
noteNo
membersYes
truncatedYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only/open-world profile, but the description adds genuinely new behavioral facts: a hard scan ceiling of 20,000 members, the return envelope { members, truncated }, and the instruction to inspect `truncated` on large servers. That truncation semantics is exactly the kind of operational detail annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and scope, followed by the return/truncation caveat and the prerequisite. No filler and nothing repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and fully documented parameters, the description only needs to add the behavioral caveats, and it does: the 20,000 cap, the truncated flag, and the role-ID discovery step. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters carry snowflake patterns and descriptions, so the schema does the heavy lifting. The description only implies that role_id selects the filter and says nothing about guild_id or ID format beyond what the schema already states, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List members who currently hold a specific role') and is clearly separable from the sibling discord_list_members, which lists all members rather than role holders. An agent can pick between the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs the agent to use discord_list_roles to discover role IDs first, which is a real prerequisite because role_id is a snowflake. It does not state when to prefer discord_list_members plus manual filtering or note any permission caveats, but the primary routing guidance is present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_scheduled_eventA
Read-only

Get full details for one scheduled event: name, description, status, type, channel/location, start/end times, creator, and interested-user count. Read-only. Returns a JSON object.

NameRequiredDescriptionDefault
event_idYesID (snowflake) of the scheduled event.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
nameYes
imageYes
statusYes
locationYes
channel_idYes
creator_idYes
user_countYes
descriptionYes
entity_typeYes
scheduled_end_timeYes
scheduled_start_timeYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so 'Read-only' mostly restates structured data. The list of returned fields adds some value, but it largely duplicates the output schema that already exists; nothing about permissions, rate limits, or failure behavior is added.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with purpose and the returned fields, with zero filler. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full parameter coverage, the description only needs purpose and safety framing, both of which it supplies. The one gap is guidance on when to fetch a single event versus listing events, which happens at the usage-guideline level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with both guild_id and event_id documented as snowflake IDs, so the description's job here is minimal. It adds no syntax or format detail beyond the schema, which is the appropriate baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (Get) plus resource (scheduled event) and an explicit scope of 'one', with the returned fields enumerated. An agent can tell it apart from discord_list_scheduled_events (plural list) and discord_get_event_subscribers 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for one scheduled event' establishes the context: use this when you already have a specific event rather than enumerating events. It never explicitly rules out or names the alternative (discord_list_scheduled_events) for discovery, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_server_statsA
Read-only

Get a snapshot of server metrics: total members (humans vs cached bots), channel breakdown (text/voice/category), role count, boost tier and count, and creation date. Read-only. Returns a JSON object. Note: bots are counted from the member cache only, so botsInCache is a lower bound and humans (total minus cached bots) an upper bound.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
nameYes
rolesYes
humansYes
channelsYes
createdAtYes
boostCountYes
boostLevelYes
botsInCacheYes
totalMembersYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description reinforces this with 'Read-only.' It adds valuable behavioral context beyond the annotations by disclosing that bots are counted only from the member cache, making botsInCache a lower bound and humans an upper bound. This caveat is exactly the kind of non-obvious behavior an agent needs to correctly interpret results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: it states the purpose, lists the metric categories, confirms read-only behavior, and then adds the important caching caveat. Every sentence contributes useful information, and there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only snapshot tool with an output schema and strong annotations, the description is complete. It covers what is returned, the read-only nature, and the crucial caveat about cached bot counts, leaving no important gap for an agent to call and interpret the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents guild_id with its type, pattern, and description, and schema description coverage is 100%. The tool description does not add any extra meaning about the parameter itself, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns a snapshot of server metrics and enumerates the specific data included (members, channels, roles, boosts, creation date). It is distinct in content from siblings like discord_get_guild_info, but it does not explicitly name or contrast any sibling, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose statement implies this is the tool to use when a server metrics snapshot is needed, and the 'Read-only' note signals safe usage. However, there is no explicit guidance about when not to use it or which sibling alternatives might be more appropriate for related but different needs, such as discord_get_guild_info or discord_list_channels.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_get_welcome_screenA
Read-only

Read the server's welcome screen: whether it is enabled, its description, and the channels it recommends with their emoji and descriptions. Requires the COMMUNITY feature. Read-only. Use discord_set_welcome_screen to change it.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
enabledYes
descriptionYes
welcome_channelsYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds the meaningful extra context that the guild must have COMMUNITY enabled. It does not spell out the failure mode when the feature is absent, which keeps it from 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the resource and its contents, followed by the prerequisite and the write-alternative. No filler or repetition of schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return shape needn't be re-explained, annotations cover safety, and the description supplies the one thing structured data lacks: the COMMUNITY feature prerequisite. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (guild_id) and schema description coverage is 100%, with the snowflake pattern documented in the schema. The description adds no further meaning about the parameter, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Read the server's welcome screen") and enumerates exactly what is returned: enabled flag, description, and recommended channels with emoji and descriptions. It is distinguishable from nearby siblings like discord_get_onboarding and discord_get_guild_settings by naming the welcome screen explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a hard precondition ("Requires the COMMUNITY feature") that tells the agent when the call will succeed, and routes the write case to the sibling discord_set_welcome_screen. That is explicit when-to-use plus a named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_kick_memberA
Destructive

Remove a member from the server. They can rejoin with a new invite (unlike a ban). Requires the Kick Members permission, and the bot's top role must be higher than the target's. Use discord_ban_member to block re-entry. The reason is recorded in the audit log.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the server audit log.
user_idYesDiscord user ID (snowflake) of the member to kick.
guild_idYesDiscord server (guild) ID (snowflake).

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as destructive, but the description adds meaningful context beyond that: kicked users may rejoin via invite, permission and role-hierarchy constraints exist, and the reason is recorded in the audit log. This is exactly the kind of behavioral detail an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences with no filler: action first, then the ban distinction, then requirements, then the alternative tool. Every sentence carries useful information and is structured for quick agent parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the outcome, reversibility, permission requirements, role hierarchy, audit-log behavior, and the alternative tool. For a destructive member-management action with 3 well-documented parameters, nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so guild_id, user_id, and reason are already fully documented in the input schema. The description only restates that the reason is recorded in the audit log, which the schema already says, so it adds no new parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action, 'Remove a member from the server', and immediately distinguishes itself from a ban by noting the member can rejoin with a new invite. It names the sibling discord_ban_member, so an agent can clearly separate this tool from related member-removal tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative tool, discord_ban_member, for blocking re-entry, which tells the agent when not to pick kick. It also gives concrete prerequisites: the Kick Members permission and the bot's top role being higher than the target's.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_automod_rulesA
Read-only

List every AutoMod rule in a server: its name, enabled state, trigger type and event type, the keyword/regex/preset lists, the allow list, mention limits, exempt roles and channels, and the configured actions. Requires the Manage Server permission (Discord gates the AutoMod endpoints on it). Read-only. Use discord_get_automod_rule for one rule.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
rulesYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, but the description adds the non-obvious authorization requirement and its rationale, which the agent could not infer from structured fields. It stops short of noting rate limits or pagination, keeping it at a solid 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: return contents, prerequisite, and alternative. The payload description is front-loaded and no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A read-only single-parameter list tool with an output schema; the description covers scope, contents, permission gate, and sibling routing. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter exists and the schema already documents guild_id fully at 100% coverage, so the description does not need to add parameter detail. A 3 is the correct baseline when the schema carries the meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('List every AutoMod rule in a server') and enumerates the returned attributes, so the agent knows exactly what data comes back. It explicitly distinguishes itself from the sibling discord_get_automod_rule, which fetches a single rule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the required Manage Server permission and explains why it is needed ('Discord gates the AutoMod endpoints on it'), and routes the agent to discord_get_automod_rule when only one rule is wanted. When-to-use, prerequisite, and alternative are all explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_bansA
Read-only

List the users banned from the server, with their ban reasons. Returns { bans: [...], nextCursor }. A page holds up to 1000 bans; if nextCursor is non-null, pass it back as after to fetch the next page. Requires the Ban Members permission. Read-only.

NameRequiredDescriptionDefault
afterNoPagination cursor: a user ID (snowflake). Pass the previous response's nextCursor to fetch the next page.
limitNoMax bans per page (1–1000). Default 1000.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
bansYes
nextCursorYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the trailing 'Read-only' is redundant but consistent. Beyond that, the description discloses the 1000-item page ceiling, the nextCursor-to-`after` loop, and the required Ban Members permission — genuinely useful behavioral context an agent could not infer from the schema alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with purpose, then return shape, pagination mechanics, and the permission gate. No filler and nothing repeated except the brief 'Read-only' confirmation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter read tool with an output schema, the description covers what an agent needs: scope, page size, cursor loop, and permission requirement. Return-value detail can safely be left to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds meaning by explicitly linking the response's nextCursor to the `after` parameter, which is the only non-obvious parameter relationship. `limit` and `guild_id` are left to the schema, which already documents them well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource (list banned users) plus what the payload contains (ban reasons). It is clearly distinguishable from the sibling mutations discord_ban_member, discord_unban_member and discord_bulk_ban without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the operational precondition (Requires the Ban Members permission) and the pagination condition for repeat calls, which tells the agent when and how to invoke it. It does not explicitly route away from siblings such as discord_get_audit_log or discord_search_members for ban-related lookups, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_channel_invitesA
Read-only

List the active invites that point to one specific channel. Unlike discord_list_invites (server-wide), this scopes results to a single channel. Requires the Manage Channels permission. Read-only.

NameRequiredDescriptionDefault
channel_idYesID (snowflake) of the channel to list invites for.

Output Schema

NameRequiredDescription
invitesYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the Manage Channels permission prerequisite, which annotations do not convey — genuinely useful for an auth-sensitive tool. The 'Read-only' sentence merely restates readOnlyHint=true, so it earns no extra credit, and no rate-limit or pagination behavior is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and scope, then the sibling distinction, then the permission requirement. Every sentence carries distinct information with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description covers scope, sibling differentiation, and the permission gate. For a single-parameter read tool, nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter exists and schema description coverage is 100%, with the snowflake pattern documented in the schema itself. The description's 'one specific channel' adds no format or constraint detail beyond what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the active invites') plus a precise scope ('that point to one specific channel'). It explicitly contrasts with discord_list_invites as server-wide, so an agent can distinguish it from the sibling without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative tool (discord_list_invites) and the exact condition that selects this one: scoping to a single channel vs server-wide listing. It also states the required Manage Channels permission, leaving nothing to inference about eligibility.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_channelsA
Read-only

List all channels in a server, grouped by their parent category and ordered by position. Returns a JSON object keyed by category name. Read-only. Use discord_find_channel_by_name to locate a specific channel.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already supply readOnlyHint=true, and the description reinforces this with 'Read-only.' It adds valuable behavioral context not in the annotations: grouping by category, ordering by position, and the exact output shape (JSON object keyed by category name). This is useful disclosure beyond the structured metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only three sentences, each earning its place: the primary behavior, the return shape/ordering, and routing to the sibling tool. No filler or redundant restatement of the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one well-documented parameter, an output schema, and annotations declaring it safe and open-world, the description covers everything an agent needs to invoke it correctly and distinguish it from the closest sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the single parameter fully ('Discord server (guild) ID (snowflake)') with 100% coverage. The description adds no further parameter-level meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), resource ('all channels in a server'), and adds meaningful detail about grouping by parent category and ordering by position. It also differentiates itself from discord_find_channel_by_name, which would be the natural overlapping sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly names the alternative tool and the condition for using it: 'Use discord_find_channel_by_name to locate a specific channel.' This gives an agent clear routing guidance beyond just saying what the tool does.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_emojisA
Read-only

List every custom emoji in a server with its ID, name, whether it is animated, its image URL, and the roles it is restricted to (empty means usable by everyone). Read-only.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
emojisYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so 'Read-only' adds nothing. The one genuinely non-obvious disclosure is that an empty roles list means the emoji is usable by everyone, which is valuable semantic context not available in structured fields. Missing are permission prerequisites (e.g. Manage Expressions) and any note on volume or ordering, and the field enumeration largely duplicates the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence covering scope, output fields, and the roles semantic; nothing is buried. The trailing 'Read-only.' is pure redundancy against readOnlyHint and could be cut.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a 1-param schema, full coverage, annotations carrying safety, and an output schema documenting the return shape, the definition covers what an agent needs to call it correctly. Only the permission prerequisite for listing role-restricted emoji is unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single guild_id parameter is fully documented with a snowflake pattern in the schema itself. The description's 'in a server' merely echoes that parameter without adding format or validation detail, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List every custom emoji in a server') and enumerates the returned attributes, which cleanly separates it from the write-side siblings (discord_create_emoji, discord_edit_emoji, discord_delete_emoji) and from discord_list_stickers. An agent can identify the tool 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The read-only list framing implies usage, but there is no explicit 'use this when you need emoji IDs before editing/deleting' guidance and no named alternative or exclusion. The agent must infer that this is the discovery step preceding discord_edit_emoji / discord_delete_emoji.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_forum_threadsA
Read-only

List posts in a forum channel. Returns { threads: [...], hasMore, nextBefore }. The first call (no before) includes all active posts plus the first page of archived posts; archived posts are paginated, so if hasMore is true pass nextBefore back as before to fetch older archived posts. Read-only. Use discord_get_forum_post to read one post's messages.

NameRequiredDescriptionDefault
limitNoMax archived posts per page (1–100). Default 100.
beforeNoPagination cursor: an ISO timestamp. Pass the previous response's nextBefore to fetch older archived posts. When set, active posts are omitted.
forum_channel_idYesID (snowflake) of the forum channel to list posts from.

Output Schema

NameRequiredDescription
hasMoreYes
threadsYes
nextBeforeYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the bare 'Read-only' statement is partly redundant. However, the description adds genuinely new behavioral detail: the return shape, the active-vs-archived split, and the hasMore/nextBefore pagination contract. That is real context an agent cannot get from 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five tight sentences, front-loaded with purpose then return shape then pagination then routing. No filler; every sentence carries either scope, contract, or a pointer to an alternative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter read tool with full schema coverage and an output schema, the description supplies exactly the missing operational layer: pagination workflow and archived-post semantics. Nothing an agent needs before calling is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds value on top by explaining the cursor feedback loop (nextBefore -> before) and sequencing semantics of `before`, which the schema states only as a static note. It does not restate `limit`/`forum_channel_id`, which the schema covers well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List posts in a forum channel') and immediately differentiates from the closest sibling, discord_get_forum_post, by naming it as the tool for reading a single post's messages. An agent can pick between the two without inspecting either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly explains the two call modes: the first call (no `before`) returns active posts plus the first archived page, and subsequent calls pass `nextBefore` back as `before`. It also routes single-post reading to discord_get_forum_post. It lacks explicit when-not guidance (e.g., for non-forum channels), but the operational context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_guildsA
Read-only

List every Discord server (guild) the bot is a member of (id, name, member count, icon). Takes no arguments. Read-only. Start here to discover the guild_id needed by most other tools.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
guildsYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, and the description's "Read-only" simply restates that. It does add the useful membership bound (results are limited to guilds the bot has joined), but says nothing about pagination, ordering, or rate limits. With annotations carrying the safety profile, this is a modest addition rather than rich context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the resource and scope, then the call signature, then the routing hint. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-shape detail in the description is unnecessary, and the description still previews the key fields. For a zero-parameter, read-only discovery tool this covers everything an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, and the description explicitly confirms "Takes no arguments," matching the empty schema. Nothing further is required for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (Discord servers/guilds) with the exact scope: only guilds the bot is a member of. It also names the fields returned (id, name, member count, icon), so an agent can distinguish it from discord_get_guild_info or discord_list_channels 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Start here to discover the guild_id needed by most other tools" gives a clear entry-point and prerequisite rationale for calling it before anything else. It does not explicitly contrast with the closest sibling (discord_get_guild_info) or state when not to use it, which keeps it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_invitesA
Read-only

List all active invites across a server (code, url, channel, inviter, uses, expiry). Requires the Manage Server permission. Read-only. Use discord_list_channel_invites to scope to one channel.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
invitesYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so 'Read-only' is redundant, but 'Requires the Manage Server permission' is real added context the agent cannot get from structured fields and will prevent failed calls. No disclosure of pagination or behavior when the server has zero invites, which keeps it below 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with purpose and scope. The parenthetical field list and 'Read-only' partly restate what the output schema and annotations already provide, so a small amount of text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return-value explanation is not required, yet the description still signals what the invite entries contain. With safety covered by annotations, the permission requirement and sibling routing are added, the agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, documented at 100% coverage in the schema as a snowflake guild ID, so the baseline is high. The description correctly frames the scope as an entire server rather than a channel, which clarifies what guild_id means in this operation even without adding new format detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all active invites across a server') plus the fields returned, and explicitly distinguishes itself from the channel-scoped sibling. An agent can pick between discord_list_invites and discord_list_channel_invites without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative (discord_list_channel_invites) and the exact condition that selects it (scope to one channel), and states the permission prerequisite for this path. Nothing about when to use one versus the other is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_membersA
Read-only

List members of a server with their roles, ordered by user ID. Returns { members: [...], nextCursor }. A page holds up to 1000 members; if nextCursor is non-null, pass it back as after to fetch the next page. Use discord_search_members to find specific members by name, or discord_get_member_info for one member's full details. Read-only.

NameRequiredDescriptionDefault
afterNoPagination cursor: a user ID (snowflake). Pass the previous response's nextCursor to fetch the next page.
limitNoHow many members per page (1–1000). Default 50.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
membersYes
nextCursorYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, and the description reinforces read-only while adding genuinely new behavioral facts: page capacity of 1000, ordering by user ID, and the exact cursor round-trip rule. It stops short of mentioning permission/intent requirements (e.g. privileged member-listing access), which is the one material omission for a paginated enumeration call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with purpose, then return shape, then pagination mechanics, then alternatives. Every sentence carries information an agent needs; there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even though an output schema exists and the return shape could be left implicit, the description still summarizes it and explains the cursor contract. Combined with the annotations and full schema coverage, an agent has everything needed to call and paginate correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already documented in the schema, including the default of 50 and the 1–1000 range. The description's pagination sentence mostly restates what the `after` parameter description already says, so it adds little beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List members of a server') plus the notable scope details (includes roles, ordered by user ID). It explicitly differentiates itself from discord_search_members and discord_get_member_info, so an agent can pick it without opening the schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names two alternatives with the condition that selects each: search_members for name lookups, get_member_info for a single member's full details. It also gives the concrete pagination procedure (pass nextCursor back as `after`), leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_name_stylesA
Read-only

List the available Unicode name styles (minimal, gaming, cyberpunk, futuristic, luxury, fantasy, anime, elegant, geometric, bordered, emoji_lead, fullwidth) with a description of each. Read-only, no arguments. Note: these styles decorate text with Unicode characters; Discord does not support applying a custom font to channel, category or role names. Use discord_style_name to preview the result for a specific name.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
stylesYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds real value beyond that by warning that styles are Unicode decoration, not fonts, and that Discord does not support custom fonts for channel/category/role names — a constraint that prevents a common misuse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the result set, then the caveat, then the next-step pointer. The inline enumeration of twelve style keys is slightly bulky but serves a real purpose in letting an agent choose a style without a round trip.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the description covers scope, safety, and the key limitation. Only the missing links to the preview/apply siblings keep it short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero-parameter tool, so baseline is 4. The description explicitly confirms 'no arguments', which matches the empty schema and leaves no ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the available Unicode name styles') and enumerates the exact style keys returned, so an agent knows precisely what comes back. Clearly distinct from the styling/applying siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear call context ('Read-only, no arguments') and routes to discord_style_name for previewing a specific name. It does not mention discord_style_preview or discord_apply_name_theme, which are plausible next steps, so the alternative-routing is partial rather than exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_reaction_role_menusA
Read-only

List the reaction-role mappings on disk, optionally filtered to one guild. These are the mappings the bot process will honour; a mapping whose role or message was deleted is still listed, so check it before trusting it.

NameRequiredDescriptionDefault
guild_idNoDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
countYes
mappingsYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes beyond the readOnlyHint annotation by disclosing the data source ('mappings the bot process will honour') and a real caveat: stale mappings whose role or message was deleted are still returned. It doesn't mention ordering or whether file-read errors surface, but the key trust caveat is covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: purpose and filter first, then the staleness warning. Zero filler and nothing useful is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read with an output schema, one documented parameter, and readOnlyHint annotations, this is nearly complete; only minor operational details (ordering, error behavior on unreadable config) are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage on the single guild_id parameter, the schema already defines the snowflake format. The description only confirms that the filter is optional and guild-scoped, adding marginal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the reaction-role mappings') plus a crucial scope qualifier ('on disk') that distinguishes this persisted-config view from live Discord state. The only related siblings are create/delete, so the operation is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the optional guild filter and warns to verify entries before trusting them, which implies when the tool is appropriate (inspection/audit before relying on a mapping). It doesn't explicitly contrast with any alternative, but no sibling performs a comparable read.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_rolesA
Read-only

List all roles in a server (excluding @everyone), highest-first, with color, position, member count, and permissions. Read-only. Returns { roles: [...] }. Use discord_get_role_members to see who holds a given role.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
rolesYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral detail beyond the annotations: roles are sorted highest-first, @everyone is excluded, and the output fields include color, position, member count, and permissions. It also confirms the return shape as { roles: [...] }. While 'Read-only' repeats the readOnlyHint annotation, the additional behavioral specifics justify a strong score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three crisp sentences that front-load the core behavior, then add ordering/exclusion details, return shape, and a sibling pointer. Every sentence earns its place and there is no redundant prose beyond the harmless restatement of read-only.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter, read-only list operation with an output schema and readOnlyHint annotation, the description covers what is needed: scope, ordering, exclusions, returned fields, output structure, and a pointer to the relevant sibling for membership lookup. No material gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter guild_id is already described in the schema as a Discord server ID snowflake. The description adds no parameter-specific semantics, which is acceptable because the schema fully documents the one required input. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('List all roles in a server') and adds rich detail: enumeration excludes @everyone, ordering is highest-first, and returned fields are named (color, position, member count, permissions). This clearly distinguishes it from role-mutation siblings like discord_create_role/discord_edit_role and from discord_get_role_members, so an agent can confidently identify its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly routes the agent to a sibling alternative, discord_get_role_members, for resolving which members hold a role. It also implies the appropriate use case of enumerating a server's roles rather than mutating or inspecting individual memberships. It does not exhaustively discuss when not to use the tool, but the clear sibling pointer provides useful selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_scheduled_eventsA
Read-only

List all scheduled events in a server (id, name, status, type, time, location, interested count). Read-only. Use discord_get_scheduled_event for one event's full details.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
eventsYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so 'Read-only' largely restates structured data. The description adds the returned-field summary, but says nothing about open-world behavior (openWorldHint), pagination, or result-size limits for a list operation across a guild.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero waste, with the returned-field summary and the alternative-tool routing both front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the field list is a helpful extra rather than a necessity, and the read-only nature is covered by annotations. The remaining gap is list-specific behavior (pagination/limits), which an agent would want for a guild-wide enumeration.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single parameter with 100% schema description coverage including the snowflake pattern, so the schema carries the burden. The description only implies 'server' scoping and adds no syntax or format detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (scheduled events) scoped to a server, and enumerates the fields returned. It explicitly distinguishes itself from discord_get_scheduled_event, so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative sibling (discord_get_scheduled_event) and the condition that selects it (one event's full details). It stops short of stating exclusions such as filtering or pagination limits on large servers, but the routing signal is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_scheduled_tasksA
Read-only

List the messages currently scheduled in this MCP server process, with their channel, next run time, run count and last error. Read-only. Because these timers are in-process, the list is empty after a restart.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
noteYes
tasksYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds meaningful context beyond them: it identifies the returned fields and warns that in-process timers make the list empty after a restart. It does not discuss ordering, pagination, or permission requirements, but the core behavioral caveat is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences front-load the core operation, then add the useful in-process caveat. Every sentence provides actionable information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, an output schema covering return values, and annotations establishing read-only safety, the description supplies everything else an agent needs: what is listed, which fields are returned, and the restart limitation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is nothing for the description to clarify beyond the schema. Baseline 4 is appropriate for a parameterless list operation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('messages currently scheduled in this MCP server process'), and the in-process scoping distinguishes it from the sibling discord_list_scheduled_events, which covers Discord guild events. An agent can identify which scheduled thing is being listed 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when the tool is useful by explaining that the list shows in-process timers, but it never explicitly names alternatives such as discord_cancel_scheduled_task or discord_list_scheduled_events, nor does it state when not to use this tool. Usage is inferable but not guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_stickersA
Read-only

List the server's custom stickers with their ID, name, description, tags, format and image URL. Read-only.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
stickersYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so "Read-only" largely restates structured data. The description does add scope (custom stickers only, not default/global ones) and lists the returned attributes, which is modestly useful but partly duplicates the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and resource, with the return-field list second and nothing extraneous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with full schema coverage, an output schema, and safety annotations, the description covers what is listed and that it mutates nothing. It lacks only permission or pagination context, which is a minor gap given the structured data already present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single guild_id parameter is documented with pattern and snowflake semantics in the schema itself. The description's only contribution is the word "server's", which maps loosely to guild_id without adding format or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb plus resource ("List the server's custom stickers") and it enumerates the returned fields, so an agent knows exactly what comes back. It doesn't explicitly distinguish itself from discord_list_emojis or the sticker mutation siblings, but the resource noun is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"The server's" implies a guild context and "Read-only" implies this is the inspection counterpart to create/edit/delete_sticker, but no alternative is named and no condition or prerequisite (e.g. needs Manage Emojis permission) is stated. Usage is inferable rather than explained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_list_webhooksA
Read-only

List the webhooks in a single channel or across a whole server (id, name, channel, token when visible, creator). Provide exactly one of channel_id or guild_id. Requires the Manage Webhooks permission. Read-only.

NameRequiredDescriptionDefault
guild_idNoDiscord server (guild) ID (snowflake) to list all webhooks for. Mutually exclusive with channel_id.
channel_idNoID (snowflake) of a channel to list webhooks for. Mutually exclusive with guild_id.

Output Schema

NameRequiredDescription
webhooksYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so 'Read-only' is partly redundant, but the description adds real signal: the required Manage Webhooks permission and the 'token when visible' caveat warning that tokens may be masked. Missing detail on pagination for large guilds keeps it off 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with no filler; the operation and its returned fields come first, the parameter constraint second, and the permission/read-only facts last.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the permission and one-of-parameter rules are covered. The one gap is behavior when listing a whole server: no mention of result caps or pagination for very large webhook sets.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description contributes something the schema does not: although required is empty and the properties are only described as 'mutually exclusive', the description states exactly one of the two must be supplied. That materially sharpens invocation semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List the webhooks') with explicit scope ('single channel or across a whole server') and even enumerates the returned fields. This cleanly separates it from discord_create_webhook, discord_edit_webhook, and discord_delete_webhook 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Provide exactly one of channel_id or guild_id' gives the agent an unambiguous selection rule between the tool's two modes, and the Manage Webhooks prerequisite is stated. It stops short of naming alternate tools (e.g. when to use channel-scoped vs server-scoped listing), but the context is clear enough to act on.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_lock_channel_permissionsA
Idempotent

Reset a channel's permission overwrites to exactly match its parent category (Discord's 'sync permissions'). The channel must be inside a category. Requires the Manage Roles permission. Returns a confirmation.

NameRequiredDescriptionDefault
channel_idYesID (snowflake) of the channel to sync with its parent category.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it as non-read-only and idempotent; the description adds that existing overwrites are reset to match the parent, that a category is required, and that a confirmation is returned. It could more explicitly warn that channel-specific overrides are discarded, but 'exactly match' conveys the effect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: the core operation, the prerequisite, and the permission/return behavior. Information is front-loaded and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with no output schema, the description covers what happens, the precondition, the required permission, and the return behavior. Combined with the annotations (idempotent, non-destructive, non-read-only), nothing essential is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter has 100% schema description coverage, so the schema already documents channel_id as a snowflake of the channel to sync. The description reinforces the category requirement but adds no new parameter-level detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description leads with a specific action and resource: 'Reset a channel's permission overwrites to exactly match its parent category.' The parenthetical '(Discord's sync permissions)' anchors the behavior in Discord terminology, making it clearly distinguishable from generic permission tools even though no sibling is named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear eligibility and permission context: the channel must be inside a category and the caller needs Manage Roles. It does not explicitly name alternatives like discord_reset_channel_permissions or state when not to use this tool, but the context is sufficient for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_move_channelA
Idempotent

Move a channel into a category, or remove it from its category when category_id is omitted. Requires the Manage Channels permission. Use discord_set_channel_position to reorder within a category. Returns a confirmation.

NameRequiredDescriptionDefault
channel_idYesID (snowflake) of the channel to move.
category_idNoTarget category (snowflake). Omit to move the channel out of any category.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-read-only, non-destructive, idempotent behavior. The description adds valuable context beyond annotations by requiring the Manage Channels permission and stating that a confirmation is returned. This gives the agent practical expectations without contradicting 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler: purpose, permission, alternative, and return value are each covered once. The primary action and the omission variant are front-loaded, making the tool easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation tool with no output schema, the description covers everything an agent needs: what the tool does, how to remove from a category, required permission, the sibling to use for reordering, and the confirmation response. No critical guidance is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters clearly. The description restates the omission behavior that is also present in the category_id schema description, but it does not add significant new parameter semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Move') with a clear resource (channel) and states the two distinct behaviors: moving into a category or removing from a category. It also distinguishes itself from the sibling discord_set_channel_position by naming that tool for reordering, so an agent can tell them apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to use this tool versus discord_set_channel_position: use this for category moves, use the other for reordering within a category. It also covers the optional category_id case, leaving no inference needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_pin_messageA
Idempotent

Pin or unpin a message in a channel, controlled by the pin flag. Requires the Pin Messages permission (a dedicated permission since early 2026, separate from Manage Messages). A channel holds at most 50 pins. Idempotent: pinning an already-pinned message (or unpinning an unpinned one) has no additional effect.

NameRequiredDescriptionDefault
pinYestrue to pin the message, false to unpin it.
channel_idYesID (snowflake) of the channel or thread containing the message.
message_idYesID of the message to pin or unpin.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=false, destructiveHint=false, and idempotentHint=true, and the description meaningfully extends these: it details the auth requirement (dedicated Pin Messages permission, distinct from Manage Messages), the operational limit (50 pins max), and precisely what idempotency means here (pinning an already-pinned or unpinning an unpinned message has no effect). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences (~60 words) with zero filler. The core behavior and controlling flag are front-loaded, followed by permission, limit, and idempotency details in decreasing order of importance. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter mutation with full schema coverage and strong annotations, the description covers behavior, mode selection, permission prerequisites, capacity limits, and idempotency semantics. No output schema exists, but pin/unpin operations have trivial success responses, so return-value documentation is not a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 even without parameter info in the description. The description's 'controlled by the pin flag' restates the schema's 'true to pin the message, false to unpin it' rather than adding new meaning. The schema also already documents the snowflake patterns and thread support, so the description adds no value beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource pair ('Pin or unpin a message in a channel') and immediately clarifies the dual-mode behavior via the pin flag. This distinguishes it from siblings like discord_delete_message, discord_send_message, and discord_fetch_pinned_messages without needing to inspect the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational context: the Pin Messages permission is a dedicated permission separate from Manage Messages, channels cap at 50 pins, and the operation is idempotent. It does not explicitly name alternatives (e.g., discord_fetch_pinned_messages for reading pins) or state when-not-to-use conditions, but the context is substantial enough to guide correct invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_prune_membersA
Destructive

Remove members who have been inactive (no roles, not seen) for a number of days. SAFE BY DEFAULT: dry_run is true unless explicitly set to false, so call it first to preview the count, then re-call with dry_run:false to actually remove them. Removal is irreversible (members must rejoin). Requires the Kick Members permission.

NameRequiredDescriptionDefault
daysYesInactivity threshold in days (1–30).
rolesNoOptional role IDs (snowflakes) to include; by default only members with no roles are counted.
reasonNoOptional reason recorded in the server audit log.
dry_runNoIf true (default), only returns the count that would be pruned without removing anyone. Set false to actually prune.
guild_idYesDiscord server (guild) ID (snowflake).

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint=true, but the description adds valuable behavioral context beyond that: safe-by-default dry_run behavior, the preview-then-remove workflow, irreversibility of removal, and the required permission. This gives the agent a clear safety model 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each carrying distinct information: the action, the safe dry-run workflow, and the irreversibility/permission caveats. There is no filler or repetition, and the most important safety guidance is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive bulk operation with no output schema, the description supplies everything an agent needs to invoke it safely: preview-first behavior, irreversibility, permission requirements, and the inactivity criteria. With full schema coverage, no critical operational detail is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameters are already fully documented. The description reinforces dry_run semantics and the inactivity criteria, but adds no new syntax or parameter details beyond what the input schema provides, which matches the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and target: 'Remove members who have been inactive (no roles, not seen) for a number of days.' This clearly states what the tool does and distinguishes it from individual member actions like kick or ban by focusing on bulk pruning of inactive members.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides an explicit safe workflow: call with dry_run true to preview the count, then re-call with dry_run:false to actually remove. It also states the Kick Members permission prerequisite. It does not explicitly compare against alternative sibling tools, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_publish_announcementA

Publish a structured announcement to a channel in one call: a title, a body, optional fields, a colour, and an optional ping target. Builds the embed for you so the layout is consistent, and lets you choose the mention policy explicitly instead of relying on the default. SAFE BY DEFAULT for mentions: no mention is parsed unless you pass ping (so '@everyone' inside the body never actually pings). If the channel is an announcement channel and crosspost is true, the message is also published to followers. Requires Send Messages (and Manage Messages to crosspost others' messages).

NameRequiredDescriptionDefault
bodyYesAnnouncement body (Markdown supported).
pingNoWho to notify. Default 'none': nothing in the body can ping anyone.none
colorNoSide-bar colour.#5865F2
titleYesAnnouncement title.
fieldsNoExtra embed fields (max 25).
footerNoFooter text.
crosspostNoAlso publish to announcement-channel followers, when the channel supports it.
channel_idYesChannel to publish in.
ping_role_idNoRole to ping when ping is 'role'. Required in that case.

Output Schema

NameRequiredDescription
pingedYes
channel_idYes
message_idYes
crosspostedYes

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the annotations (readOnly=false, destructive=false, openWorld=true) by disclosing the safety contract — no mention is parsed unless ping is passed, so '@everyone' in the body cannot ping — plus the crosspost-to-followers condition and the required permissions (Send Messages, Manage Messages to crosspost others' messages). These are exactly the mutation-side risks an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads what the tool produces, then the mention-safety rule, then the crosspost conditional and permissions — a sensible priority order. It is somewhat long for a single tool and repeats the schema's ping default, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, full annotation coverage and 100% parameter descriptions, the remaining burden is behavioural context — permissions, mention safety, and follower crossposting — and the description covers all three. An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and every parameter already carries a description, so the baseline is 3. The description reinforces the ping default ('no mention is parsed unless you pass ping'), which is useful, but it does not explain field layout, limits, or the ping='role' + ping_role_id dependency beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — publishes a structured announcement with title, body, fields, colour and ping — and distinguishes itself functionally by noting it 'builds the embed for you so the layout is consistent.' It never names the obvious siblings (discord_send_embed, discord_send_message, discord_crosspost_message), so the agent must infer the split itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied rather than stated: the tool is clearly for one-shot structured announcements, and the crosspost sentence explains a conditional behaviour. But there is no explicit 'use discord_send_embed when you need arbitrary embed JSON' or 'use discord_send_message for plain text' routing, which is the main ambiguity among the many send/crosspost siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_read_audit_trailA
Read-only

Read this MCP server's own record of what it changed: every mutating tool call, when it ran, which guild it targeted, whether it was applied or only previewed, and whether it failed. This is NOT Discord's audit log (use discord_get_audit_log for that); it is the server's in-memory trail, capped at the 500 most recent entries and lost when the process restarts. Read-only. Use it to answer 'what did the bot just do?'.

NameRequiredDescriptionDefault
limitNoHow many recent entries to return.

Output Schema

NameRequiredDescription
noteYes
entriesYes

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered structurally. The description adds genuinely useful non-schema behavior: the trail is in-memory, capped at 500 entries, and lost on process restart, plus it records previewed-but-not-applied calls. These are real durability/coverage caveats, though return shape and ordering are left to the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core definition, then the sibling disambiguation, then retention caveats. Dense but every clause carries information an agent needs; no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation. The description covers scope, what is recorded, retention limits, restart loss, and the sibling distinction — everything an agent needs to decide and call correctly for a single-optional-param read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a documented limit (default 50, max 500), so the schema does the heavy lifting. The description still adds meaning by explaining that the underlying trail is capped at 500, which justifies the parameter's ceiling and tells the agent the limit cannot reach older history.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read this MCP server's own record of what it changed') and enumerates the recorded fields: tool call, timestamp, guild, applied vs previewed, failure. It explicitly negates the confusingly-named sibling discord_get_audit_log, so an agent can disambiguate without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit when-to-use ('what did the bot just do?') and a when-not/alternative ('This is NOT Discord's audit log (use discord_get_audit_log for that)'). Both the positive trigger and the exclusion are named directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_read_dmsA
Read-only

Read the most recent messages from the bot's DM conversation with a user, oldest-to-newest. Returns { messages: [...] } with id, author, content, embed count, timestamp. Read-only.

NameRequiredDescriptionDefault
limitNoHow many recent messages to fetch (1–100). Default 20.
user_idYesDiscord user ID (snowflake) of the DM recipient.

Output Schema

NameRequiredDescription
messagesYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, and the description reinforces this with 'Read-only.' It adds useful behavioral detail beyond annotations by specifying the return shape ({ messages: [...] }), included fields, and chronological ordering. This is sufficient for a simple read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. It front-loads the core action and scope, then provides return format and read-only status. Every sentence adds necessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and this is a straightforward read-only DM fetch, the description covers the essential context: what is read, the scope, message ordering, and return structure. No critical information for invoking it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters are already well documented in the schema. The description adds minimal parameter meaning beyond restating the DM conversation context, so the schema carries the burden and the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Read the most recent messages from the bot's DM conversation with a user.' It uniquely identifies DM scope and distinguishes this from sibling tools like discord_read_messages, which presumably handles channel messages. It also states ordering (oldest-to-newest), removing ambiguity about message order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this is the tool for reading a user DM conversation, which is enough context for an agent to select it over most siblings. It does not explicitly mention alternatives or exclusion criteria, but the DM-specific wording and sibling names make the intended use fairly clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_read_messagesA
Read-only

Read messages from a text channel or thread, oldest-to-newest. Page backwards by re-calling with before set to the id of the oldest message you received, which walks a channel past the 100-message per-call cap. Requires the View Channel and Read Message History permissions. Returns { messages: [...] } with id, author, content, timestamp, attachment count, pinned flag. Use discord_search_messages to filter by keyword, or discord_fetch_pinned_messages for pinned messages only.

NameRequiredDescriptionDefault
afterNoReturn only messages newer than this message ID (snowflake). Page forwards by passing the id of the newest message from the previous call.
limitNoHow many messages to fetch per call (1–100). Default 20.
sinceNoReturn only messages posted after this instant, as an ISO 8601 date or a date-time with an explicit offset (e.g. "2026-08-01" or "2026-08-01T09:00:00Z"). Convenience form of `after`: the call yields the oldest `limit` messages after that instant, so page forwards with `after` set to the newest id received.
aroundNoReturn messages centered on this message ID (snowflake): Discord splits `limit` either side of it, and an even `limit` puts the extra message on the newer side. Use it to read outward from a known message, such as a discord_search_guild_messages hit.
beforeNoReturn only messages older than this message ID (snowflake). Page backwards through history by passing the id of the oldest message from the previous call.
channel_idYesID (snowflake) of the channel or thread to read from.

Output Schema

NameRequiredDescription
messagesYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, so the safety profile is covered; the description adds the non-obvious behavioral facts that matter: the 100-message per-call cap, the backwards-paging recipe, and the required permissions. It stops short of any comment on rate limits or behavior when a channel is empty/inaccessible, keeping it off 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences, front-loaded with scope and paging before moving to permissions and alternatives. The one wasted element is the enumeration of returned fields (id, author, content, timestamp, attachment count, pinned flag), which duplicates the output schema and is repeated nowhere else the agent needs it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter read tool with full schema coverage and an output schema, everything an agent needs is present: what it reads, in what order, how to paginate past the cap, what permissions are required, and which siblings to prefer for other intents. No material gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining the cross-parameter paging workflow ('re-calling with before set to the id of the oldest message you received'), which the per-field schema descriptions state individually but never compose into a procedure. It doesn't add anything about the around/since interplay beyond what the schema already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('Read messages from a text channel or thread') plus an explicit ordering guarantee (oldest-to-newest). It names the sibling tools it is not (discord_search_messages, discord_fetch_pinned_messages), so an agent can route correctly without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use-what: use this to walk a channel, use discord_search_messages for keyword filtering, use discord_fetch_pinned_messages for pinned-only. It also states the prerequisite permissions (View Channel, Read Message History), which is the main condition for failure.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_remove_guild_bannerA
DestructiveIdempotent

Remove the server's banner. Requires Manage Server and the BANNER feature (boost level 2+). Not reversible. Returns the guild ID.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
bannerYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so irreversibility is partly covered; the description still adds the concrete permission and boost-level gate, which is not derivable from structured fields. It also notes the return value, though an output schema exists. Missing detail on failure modes (what happens if the guild has no banner or lacks boost).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each carrying distinct information: action, prerequisites, irreversibility plus return. Nothing is redundant and the action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation with rich annotations and an output schema, the description supplies the permission gate, feature requirement, reversibility, and return value — everything an agent needs to decide and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (guild_id and the optional audit-log reason) are already documented. The description adds no parameter-level meaning and never mentions the reason field, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb plus resource: 'Remove the server's banner.' This is unambiguously distinct from the sibling discord_set_guild_banner and discord_remove_guild_icon, which target a different resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the preconditions for legitimate use ('Requires Manage Server and the BANNER feature (boost level 2+)'), which tells the agent when the call can succeed. It does not name alternatives (e.g., set_guild_banner to replace rather than remove) or describe when not to call it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_remove_guild_iconA
DestructiveIdempotent

Remove the server's icon, reverting to Discord's generated default. Requires Manage Server. This is not reversible: the previous image is gone. Returns the guild ID.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
iconYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the bar is lower; the description still adds real value by naming the required permission, spelling out that the prior image is permanently gone, and stating the post-state (Discord's generated default). Only the return value is restated, which the output schema already covers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with zero filler: the action and its effect come first, then the permission gate, then the irreversibility warning. Every sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, destructive guild-settings tool with full annotation coverage and an output schema, nothing an agent needs to call it safely is missing: permission requirement, irreversibility, and resulting state are all present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so guild_id (snowflake) and reason (audit log) are already fully documented. The description adds nothing about either parameter, which is the expected baseline when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Remove the server's icon') plus the resulting state ('reverting to Discord's generated default'), which distinguishes it from sibling discord_set_guild_icon and discord_remove_guild_banner without any schema inspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the gating condition ('Requires Manage Server') and the consequence of use ('not reversible: the previous image is gone'), which is clear usage context. It stops short of explicitly routing to the alternative (set_guild_icon to replace rather than remove), so it is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_remove_reactionsA
DestructiveIdempotent

Remove reactions from a message. With no emoji: removes ALL reactions. With emoji only: removes every reaction of that emoji. With emoji and user_id: removes that one user's reaction. Removing all reactions or another user's reaction requires the Manage Messages permission. Use discord_add_reaction to add.

NameRequiredDescriptionDefault
emojiNoUnicode emoji or custom emoji 'name:id'. Omit to remove ALL reactions on the message.
user_idNoRemove only this user's reaction for the given emoji. Requires emoji to be set.
channel_idYesID (snowflake) of the channel or thread containing the message.
message_idYesID of the message to remove reactions from.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint and readOnlyHint annotations, the description discloses exactly what gets destroyed in each mode, including the all-reactions case. It also exposes the Manage Messages permission requirement for removing all reactions or another user's reaction, adding meaningful behavioral context the annotations do not carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence carries distinct information: core purpose, the three scope variants, the permission caveat, and the sibling routing sentence. It is front-loaded with the main action and uses compact parallel phrasing with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive reaction tool with no output schema, the description covers all necessary call decisions: which parameters to include, what each combination removes, and when elevated permission is required. The annotations fill in the remaining idempotency and destructiveness context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents all four parameters at 100% coverage, so the baseline is 3. The description adds value by defining the legal combinations of emoji and user_id and their effects, which the parameter descriptions alone only partially convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action and object, 'Remove reactions from a message,' and then breaks out the exact scope variants: all reactions, one emoji, or one user's reaction. It also names the related sibling discord_add_reaction, making the tool's purpose easy to distinguish from the add operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The three parameter combinations are explicitly mapped to three removal behaviors, and the permission requirement for the destructive variants is stated. The final sentence tells the agent to use discord_add_reaction when the intent is to add rather than remove, providing a clear routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_remove_roleA
Idempotent

Remove a role from a member. Requires the Manage Roles permission, and the role must be below the bot's highest role. Idempotent: removing a role the member doesn't have has no effect. Reverses discord_add_role.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the server audit log.
role_idYesID (snowflake) of the role to remove.
user_idYesDiscord user ID (snowflake) of the member to remove the role from.
guild_idYesDiscord server (guild) ID (snowflake).

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations by explaining the exact idempotency behavior ('removing a role the member doesn't have has no effect') and the permission/hierarchy requirements. It also clarifies the relationship to discord_add_role, which is behavioral context not present in the structured data. No contradiction with annotations; idempotentHint and destructiveHint are both consistent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each contributing distinct value: the action, the prerequisites, the idempotency detail, and the sibling relationship. It is front-loaded with the main verb and resource, and there is zero filler or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers the essential context: what it does, permissions, role hierarchy, idempotent behavior, and relation to a sibling. It doesn't mention possible error cases (e.g., member not in guild, role not found), but these are reasonably inferred from standard Discord behavior and the schema's snowflake patterns. Overall, the agent has enough to use it correctly in most scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter (guild_id, user_id, role_id, reason) already documented. The description adds no additional parameter-level meaning, so the baseline of 3 applies. The requirement about the bot's role hierarchy provides some context for role_id but is not a direct parameter semantic.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Remove a role from a member') that unambiguously states the action. It distinguishes itself from siblings by explicitly noting it 'Reverses discord_add_role,' differentiating it from role-editing or role-deletion tools. The name itself is also descriptive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: it reverses discord_add_role, implying the primary use case is undoing a role assignment. It also states prerequisites (Manage Roles permission, role must be below the bot's highest role), which helps the agent decide if the tool can be invoked. It doesn't explicitly list alternatives for when not to use it, but the named sibling relationship gives solid guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_reply_dmA

Reply to a specific message in a DM, attaching a quoted reply reference. Unlike the edit/delete DM tools, this works on any message in the conversation (the bot's or the user's). Use discord_send_dm for a standalone DM with no reference. Returns the new reply's message ID.

NameRequiredDescriptionDefault
contentYesPlain-text body of the reply (max 2000 characters).
user_idYesDiscord user ID (snowflake) of the DM recipient.
message_idYesID of the target message within the DM conversation.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal a non-read, non-destructive write operation, so the bar is lower. The description adds useful behavioral context beyond annotations: the quoted-reply reference behavior, the fact that the target can be the bot's or the user's message, and the return value (new reply's message ID). It does not discuss failures or rate limits, but the added context is meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with zero waste: core behavior, sibling differentiation, alternative routing, and return value. The most important scoping constraint is front-loaded in the first sentence, and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter tool with rich schema descriptions and annotations, the description is nearly complete: it covers behavior, quoting, message scope, alternatives, and return value. The only gap is not explicitly distinguishing from discord_reply_message (the guild-message counterpart), though the DM scope is inherent in the tool name and description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by clarifying message_id semantics — that the target can be 'any message in the conversation (the bot's or the user's)' — which is not stated in the schema. It also states that content is a plain-text reply body, consistent with the schema's max-2000-character constraint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: 'Reply to a specific message in a DM, attaching a quoted reply reference.' It distinguishes from sibling DM tools (edit/delete/send) by noting it works on any message and that send_dm is for standalone messages with no reference. The purpose is immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use guidance is provided: 'Unlike the edit/delete DM tools, this works on any message in the conversation... Use discord_send_dm for a standalone DM with no reference.' This names alternatives and the condition that selects this tool, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_reply_messageA

Reply to a specific message, attaching a reply reference so clients show it as a threaded reply. Use discord_send_message for a standalone message with no reference. Requires the Send Messages permission. Returns the new reply's message ID.

NameRequiredDescriptionDefault
contentYesPlain-text body of the reply (max 2000 characters).
channel_idYesID (snowflake) of the channel or thread containing the message.
message_idYesID of the message to reply to.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses that a reply reference is attached, that clients render it as a threaded reply, that Send Messages permission is required, and that the response contains the new message ID. No statement contradicts 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each carrying distinct information: behavior, alternative, permission, and return value. It is front-loaded with the core action and contains no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter mutation with no output schema, the description covers the essentials: what the tool does, when to use it, what permission is needed, and what it returns. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all three parameters. The description reinforces the relationship between message_id and channel_id by explaining the reply reference, but adds no syntax or parameter-specific detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Reply') and a specific resource ('a specific message'), then explains the reply-reference mechanism. It explicitly differentiates itself from discord_send_message, the closest sibling, by contrasting threaded vs standalone messages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit routing rule: use discord_send_message for a standalone message with no reference, and by implication use this tool when a reply reference is desired. It also states the required Send Messages permission, giving the agent enough context to decide when to call it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_reply_to_forumA

Post a follow-up message inside an existing forum post (thread). Requires the Send Messages in Threads permission (shown as 'Send Messages in Posts' for forums). Use discord_create_forum_post to start a new post instead. Returns the new message ID.

NameRequiredDescriptionDefault
contentYesPlain-text body of the reply (max 2000 characters).
thread_idYesID (snowflake) of the forum post (thread) to reply in.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a write operation (readOnlyHint=false), but the description adds useful context beyond that: the required 'Send Messages in Threads' permission and the fact that the tool 'Returns the new message ID'. This enriches the agent's understanding without contradicting 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three targeted sentences carry the action, permission requirement, alternative, and return value without redundancy. It opens with the core purpose and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, both required parameters are fully documented in the schema, annotations cover the write nature, and the description provides the missing return information. An agent has everything needed to select and invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and both parameters already have clear descriptions in the schema: content is a max-2000-character plain-text body, and thread_id is the snowflake ID of the forum post. The description adds no extra parameter-level meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Post a follow-up message inside an existing forum post (thread)', identifying both a specific verb and resource. It also distinguishes itself from discord_create_forum_post by explicitly saying that tool is for starting a new post instead.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use context: 'inside an existing forum post'. It also names the alternative, discord_create_forum_post, and tells the agent to use that instead when starting a new post. The permission requirement further clarifies the conditions under which this tool can be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_reset_channel_permissionsA
DestructiveIdempotent

Remove ALL permission overwrites on a channel, so only role/server-level permissions apply. Does NOT re-sync with the category; use discord_lock_channel_permissions for that. IRREVERSIBLE: the cleared overwrites cannot be recovered. Requires the Manage Roles permission.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the server audit log.
channel_idYesID (snowflake) of the channel whose overwrites will be cleared.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as destructive and non-read-only, but the description adds meaningful behavioral context beyond those hints: the operation is IRREVERSIBLE, the cleared overwrites cannot be recovered, and the Manage Roles permission is required. It also discloses the non-resync behavior, which is not captured in the annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each carrying essential information: the action, the critical limitation and alternative, and the irreversibility/permission warning. No filler, and the most important operational detail is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no output schema, the description provides everything an agent needs to invoke it correctly: the exact effect, a safety warning, the required permission, and a sibling alternative for a related but different operation. The annotations already cover read-only/destructive/idempotent traits, and the schema covers parameters, so no meaningful gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both channel_id and reason are already documented in the schema. The description does not add new parameter-level detail, which is acceptable given the schema already fully defines the parameters. This matches the baseline for full-schema-coverage tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Remove ALL permission overwrites on a channel') and clarifies the exact scope of the operation — only overwrites are removed, leaving role/server-level permissions intact. It also distinguishes itself from nearby permission tools by explaining what it does not do (resync with the category), making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when this tool is appropriate (when all overwrites should be removed) and provides a clear exclusion: it does not resync with the category, and names the sibling tool discord_lock_channel_permissions as the alternative for that case. It also gives a prerequisite (Requires the Manage Roles permission), which helps an agent decide whether this is the right tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_restore_structureA
Idempotent

Restore a structure backup into a server. PREVIEWS BY DEFAULT: returns exactly what would be created; re-call with confirm:true to apply. ADDITIVE ONLY: it creates roles, categories and channels that are missing and never deletes or renames anything, because a restore that removes entities turns a stale backup into a wipe. Permission overwrites are re-applied by matching role NAMES from the backup to the live server's roles; member-specific overwrites are skipped, since user IDs differ across servers. Requires Manage Channels and Manage Roles.

NameRequiredDescriptionDefault
backupYes
confirmNoSet true to actually create. Default false returns a preview.
guild_idYesDiscord server (guild) ID (snowflake).
include_rolesNoAlso create missing roles.

Output Schema

NameRequiredDescription
modeYes
notesYes
failedYes
appliedYes
createdYes
plannedYes
skippedYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Substantially exceeds the annotations: it explains why destructiveHint=false (additive only, never deletes or renames, with the stated rationale about stale backups becoming wipes) and echoes idempotency through the missing-only creation rule. It also discloses non-obvious mechanics (overwrites re-applied by role name, member overwrites skipped due to cross-server ID mismatch) and the required Manage Channels/Manage Roles permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the preview-by-default warning, then scope constraints, then matching caveats, then permissions. Every sentence adds a distinct operational fact with no restatement of the name or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-object, 4-param, permission-gated mutation with an output schema, the description covers safety model, two-phase invocation, entity-matching limits and auth requirements. Return values are handled by the output schema, so nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% and already documents confirm and guild_id; the description adds the operational meaning of confirm (preview vs. apply lifecycle) and clarifies that roles, categories and channels are all created when missing, tying to include_roles. It adds little about the backup object's required fields, but the schema's const format and structure carry that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: restore a structure backup into a server, with the object being a serialized backup rather than a live plan, which separates it in spirit from discord_architect_apply. It never names a sibling explicitly, so an agent must infer that distinction from the 'backup' object shape.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear operational sequence: the first call previews, and you re-call with confirm:true to apply. That is real when-to-use guidance for the two-phase workflow, but it offers no exclusion such as when to prefer architect_apply/compare_structure or what to do about entities that exist but differ.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_schedule_messageA

Schedule a message to be sent to a channel after a delay, optionally repeating. IMPORTANT LIMITATION: the timer runs inside this MCP server process, so it fires only while the server is running and is lost when it stops. For a post that must survive a restart, use a durable scheduler (cron, a CI workflow, or an OpenHands automation) that calls discord_send_message instead. Returns the task ID and the time of the next run.

NameRequiredDescriptionDefault
urlNoURL that makes the title clickable.
colorNoSide-bar color as a hex string, e.g. '#5865F2'.
titleNoEmbed title shown in bold at the top.
authorNoAuthor block shown at the top of the embed.
fieldsNoUp to 25 name/value field blocks. Set inline:true on a field to render it side-by-side with adjacent inline fields (up to 3 per row).
footerNoFooter text shown at the bottom of the embed.
contentNoPlain-text body (max 2000 characters).
max_runsNoStop after this many sends. Omit to repeat indefinitely while the server runs.
image_urlNoLarge image shown below the embed body.
timestampNoIf true, stamp the embed with the current time.
channel_idYesChannel to post in.
descriptionNoMain body text of the embed (supports Markdown).
delay_secondsYesSeconds to wait before the first send (1–604800).
thumbnail_urlNoSmall image shown in the top-right corner.
repeat_every_secondsNoRepeat interval in seconds (minimum 60). Omit for a one-off message.

Output Schema

NameRequiredDescription
repeatsYes
task_idYes
warningYes
next_run_atYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say it is a non-read-only, non-destructive, open-world, non-idempotent write. The description adds the critical non-obvious trait that the timer is process-local and dies on restart, plus what is returned (task ID and next run time) — behavior an agent could not infer from any structured field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, then the limitation, then the return value. Every sentence carries distinct decision-relevant information and none restate the tool name or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need little explanation, and the description still covers them. It omits two things an agent might need: how to cancel a scheduled task (discord_cancel_scheduled_task is a sibling) and any permission prerequisite for posting to the channel — minor gaps against otherwise strong coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across all 15 parameters including nested author and fields objects, so the schema already carries full parameter meaning. The description only implicitly maps 'after a delay' to delay_seconds and 'optionally repeating' to repeat_every_seconds/max_runs, adding nothing about embed vs plain content composition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Schedule a message to be sent to a channel') plus the two defining modifiers: a delay and optional repetition. It also names discord_send_message as the contrasting tool, so an agent can distinguish scheduling from an immediate send without inspecting either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-not condition ('the timer runs inside this MCP server process... lost when it stops') and names concrete alternatives (cron, CI workflow, OpenHands automation calling discord_send_message). This is the exact routing information an agent needs to avoid picking this tool for durable posts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_search_guild_messagesA
Read-only

Search for messages across all channels in a guild using Discord's native search API. Returns messages matching the query with channel context. Requires READ_MESSAGE_HISTORY permission. Use discord_search_messages for channel-specific search.

NameRequiredDescriptionDefault
limitNoMax messages to return (1–25). Default 25.
queryYesSearch query (case-insensitive).
guild_idYesDiscord server (guild) ID (snowflake).
author_idNoOptional. Only show messages from this user ID.
channel_idNoOptional. Restrict search to this channel ID.

Output Schema

NameRequiredDescription
matchesYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds valuable context beyond annotations by specifying the permission requirement and explaining that results include channel context, which helps set expectations for what the search returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences with no filler. It front-loads the core purpose and scope, then adds the permission requirement and the sibling-tool distinction, making every sentence valuable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search tool with a complete input schema, an output schema, and annotations already covering the read-only and open-world hints, the description provides sufficient context. It identifies scope, permission needs, result shape, and the relevant alternative tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented in the schema. The description adds only minimal semantic value by confirming matches are based on 'query' and that results carry 'channel context', but it does not need to compensate for schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific operation: search for messages across all channels in a guild using Discord's native search API. It is explicitly distinguished from discord_search_messages by noting the channel-specific alternative, so an agent can tell them apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description defines the tool's scope ('across all channels') and explicitly provides guidance for when not to use it: 'Use discord_search_messages for channel-specific search.' The required READ_MESSAGE_HISTORY permission also gives practical usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_search_membersA
Read-only

Find server members whose username or nickname starts with a query string (prefix match). Returns { members: [...] } with id, username, nickname, roles. Use discord_list_members to page through everyone. Read-only.

NameRequiredDescriptionDefault
limitNoMax members to return (1–100). Default 25.
queryYesPrefix to match against usernames and nicknames.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
membersYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the trailing 'Read-only' is redundant and earns no credit. The useful additions are the prefix-only matching constraint (not mid-string or fuzzy) and the documented return shape ({ members: [...] } with id, username, nickname, roles). Nothing contradicts 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with purpose, then return shape, then the sibling routing hint. The final 'Read-only' fragment duplicates the annotation and is the one piece of dead weight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter read, the description plus a full-coverage schema and an output schema covers what an agent needs. Minor gaps remain: case sensitivity of the prefix match and behavior on zero results are unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already states that query is a prefix matched against usernames and nicknames, and that limit is 1–100 with default 25. The description's prefix phrasing restates the schema rather than adding to it, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Find), resource (server members), and precise matching semantics (prefix match on username or nickname), plus the return shape. This clearly separates it from discord_list_members without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names discord_list_members as the alternative and gives the condition that selects it ('to page through everyone'). It does not address why an agent would prefer this over discord_get_member_info when the target is already known, but the primary decision point is covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_search_messagesA
Read-only

Keyword search over a channel's recent messages using case-insensitive substring matching. Scans only up to the last 100 messages; it does not search full history. Returns { matches: [...] } with id, author, content, timestamp. Use discord_read_messages to fetch recent messages without filtering.

NameRequiredDescriptionDefault
limitNoMax number of recent messages to scan (1–100). Default 100.
keywordYesCase-insensitive substring to match within message content.
channel_idYesID (snowflake) of the channel or thread to search.

Output Schema

NameRequiredDescription
matchesYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already covering the safety profile, the description adds meaningful behavioral context: the 100-message scan cap, the non-full-history limitation, and the exact return shape { matches: [...] } with field names. This goes beyond the annotations and tells the agent what actually happens at runtime.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences (~65 words) with nothing wasted. Core purpose is front-loaded, followed by the critical limitation, the return shape, and the sibling routing. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity filtered-read tool, the description is nearly complete: it covers purpose, semantics, scope limits, return format, and an alternative tool, while annotations and output schema handle safety and response structure. The only gap is not distinguishing from discord_search_guild_messages (guild-wide vs. channel-local search), though the phrase 'a channel's recent messages' largely implies it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (channel_id, keyword, limit) are already documented in the input schema. The description reinforces the keyword semantics and contextualizes the limit with 'Scans only up to the last 100 messages,' but adds no new parameter syntax or format details. Baseline 3 applies as schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('search'), a precise resource ('a channel's recent messages'), and the matching mechanism ('case-insensitive substring matching'). The channel-scoped phrasing distinguishes it from discord_search_guild_messages, and it explicitly names discord_read_messages as the unfiltered alternative, so an agent can tell them apart immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: use when you need keyword filtering over a channel's recent messages. Names discord_read_messages as the alternative when no filtering is needed and states an explicit exclusion ('does not search full history'). However, it does not mention the guild-wide search sibling (discord_search_guild_messages) for broader search needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_send_dmA

Send a private direct message to a user by their user ID. Use discord_send_message to post in a server channel instead. Requires the bot to share at least one server with the user, and the user must allow DMs from server members (otherwise Discord rejects the send). Returns the new message ID.

NameRequiredDescriptionDefault
contentYesPlain-text body of the DM (max 2000 characters).
user_idYesDiscord user ID (snowflake) of the DM recipient.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the failure mode (Discord rejects the send if DMs are not allowed), the prerequisite of sharing a server, and the return value (new message ID). Annotations only indicate read-only, idempotency, and destructive hints, so this extra behavioral context is valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no wasted words. The primary action is front-loaded, the sibling alternative is given immediately, and the prerequisites and return value each earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter send action with no output schema, the description covers the essential context: what it does, when to use the alternative, the failure conditions, prerequisites, and what the caller gets back. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters are already well documented in the schema: user_id as a Discord snowflake and content as max-2000-character plain text. The description adds only minimal extra meaning, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Send a private direct message to a user by their user ID.' It clearly distinguishes this tool from the sibling discord_send_message by explicitly noting that discord_send_message is for server channels.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly tells the agent to use discord_send_message instead when posting in a server channel, and it states the preconditions for success: the bot must share a server with the user and the user must allow DMs from server members. This gives clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_send_dm_embedA

Send a rich embed as a private direct message to a user. Use discord_send_dm for plain text, or discord_send_embed to post an embed in a channel. Requires the bot to share a server with the user, and the user must allow DMs from server members. Returns the new message ID.

NameRequiredDescriptionDefault
urlNoURL that makes the title clickable.
colorNoSide-bar color as a hex string, e.g. '#5865F2'.
titleNoEmbed title shown in bold at the top.
authorNoAuthor block shown at the top of the embed.
fieldsNoUp to 25 name/value field blocks. Set inline:true on a field to render it side-by-side with adjacent inline fields (up to 3 per row).
footerNoFooter text shown at the bottom of the embed.
contentNoOptional plain text shown above the embed.
user_idYesDiscord user ID (snowflake) of the DM recipient.
image_urlNoLarge image shown below the embed body.
timestampNoIf true, stamp the embed with the current time.
descriptionNoMain body text of the embed (supports Markdown).
thumbnail_urlNoSmall image shown in the top-right corner.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag this as a non-read, non-idempotent write, so the bar is lower. The description adds genuine value beyond that: the DM permission prerequisites, the open-world dependency on recipient settings, and the return value ('Returns the new message ID') which is otherwise undisclosed since there is no output schema. The description is consistent with all annotation hints — no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: core purpose, sibling routing, then prerequisites plus return value. Front-loaded and free of filler or restatement of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a complex 12-param tool with nested objects and no output schema. The description covers purpose, alternative routing, prerequisites, and the return value (compensating for the missing output schema). Failure conditions are implied by the stated prerequisite about DM permissions, which is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — all 12 parameters, including nested author and fields objects, have meaning-bearing descriptions in the schema. The description itself adds no parameter-level detail, but with full coverage it doesn't need to, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource — 'Send a rich embed as a private direct message to a user' — and immediately distinguishes itself from siblings by naming discord_send_dm (plain text) and discord_send_embed (channel embed). An agent can tell this apart from the sibling send tools 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides selection criteria: use discord_send_dm for plain text, discord_send_embed for embeds in a channel, and this tool for embeds delivered as DMs. It also discloses prerequisites the agent must verify before calling — the bot must share a server with the recipient and the user must allow DMs from server members — so the agent knows when the call will likely fail.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_send_embedA

Send a single rich embed (title, description, color, fields, author, footer, images, timestamp). Use discord_send_message for plain text, or discord_send_multiple_embeds to send several embeds at once. Requires the Send Messages and Embed Links permissions. Returns the new message ID.

NameRequiredDescriptionDefault
urlNoURL that makes the title clickable.
colorNoSide-bar color as a hex string, e.g. '#5865F2'.
titleNoEmbed title shown in bold at the top.
authorNoAuthor block shown at the top of the embed.
fieldsNoUp to 25 name/value field blocks. Set inline:true on a field to render it side-by-side with adjacent inline fields (up to 3 per row).
footerNoFooter text shown at the bottom of the embed.
image_urlNoLarge image shown below the embed body.
timestampNoIf true, stamp the embed with the current time.
channel_idYesID (snowflake) of the target channel or thread.
descriptionNoMain body text of the embed (supports Markdown).
thumbnail_urlNoSmall image shown in the top-right corner.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), lowering the burden on the description. The description adds genuine value by disclosing auth requirements ('Requires the Send Messages and Embed Links permissions') and the return behavior ('Returns the new message ID'), which matters since no output schema exists. It does not mention rate limits or failure modes, but those are minor gaps given the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with zero fluff: core function first, then routing guidance, then permissions and return value. Every sentence earns its place and the most decision-relevant information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter creation tool with nested objects and no output schema, the description covers the essentials: what it does, when to use it versus alternatives, required permissions, and the return value (message ID). Minor gaps remain — it does not bound whether the target channel may be a DM (versus discord_send_dm_embed) and does not flag Discord's embed content limits — but the fully-covered schema compensates for most of this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's component list (title, description, color, fields, author, footer, images, timestamp) mostly echoes parameter names already documented in the schema rather than adding new meaning, and it adds nothing about formats, constraints, or relationships beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Send a single rich embed', and enumerates its components (title, description, color, fields, author, footer, images, timestamp). It also explicitly distinguishes itself from discord_send_message and discord_send_multiple_embeds, so an agent can tell them apart without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is explicitly routed: 'Use discord_send_message for plain text, or discord_send_multiple_embeds to send several embeds at once.' It also states the required permissions ('Send Messages and Embed Links'), giving concrete preconditions an agent must verify before invoking the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_send_messageA

Send a plain-text message to a channel or thread. For rich content (title, color, fields, images) use discord_send_embed; to attach a reply reference to an existing message use discord_reply_message. Requires the bot to have the Send Messages permission. Returns the new message ID.

NameRequiredDescriptionDefault
contentYesPlain-text body of the message (max 2000 characters).
channel_idYesID (snowflake) of the target channel or thread.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a non-read-only, non-idempotent write operation, but the description adds important behavioral context: the bot must have Send Messages permission, and the tool returns the new message ID. This is especially valuable because there is no output schema. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, each earning its place: purpose, alternatives, and prerequisite/return value. The core purpose and scope are front-loaded, and there is no redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description is complete: it covers what the tool does, when to use alternatives, required permission, and the return value. An agent has enough context to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description mostly restates what the schema already says ('plain-text', 'channel or thread') and adds limited new parameter meaning beyond the structured definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Send') and resource ('plain-text message to a channel or thread'). It explicitly differentiates from discord_send_embed and discord_reply_message, so an agent can distinguish this tool from its closest siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names concrete alternatives and the conditions that select them: rich content should use discord_send_embed, and reply-reference use should use discord_reply_message. It also states a required prerequisite (Send Messages permission), which helps an agent know when this tool is applicable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_send_multiple_embedsA

Send up to 10 embeds in a single message, with optional text above them. Use discord_send_embed for a single embed. Requires the Send Messages and Embed Links permissions. Returns the new message ID.

NameRequiredDescriptionDefault
embedsYesArray of embed objects to send (max 10).
contentNoOptional plain text shown above the embeds.
channel_idYesID (snowflake) of the target channel or thread.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are thin (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the description carries the behavioral burden. It discloses permission requirements and the return value ('Returns the new message ID'), which are genuinely additive 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: core action, sibling routing, then permissions plus return value. No redundant restatement of the schema and the key scope fact (up to 10) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 100% schema coverage, the tool is fairly complex (embeds carry many fields) and there is no output schema, so the description's disclosure of the return value is important and present. A minor gap is the absence of failure or rate-limit behavior, but the operational essentials are covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents channel_id, embeds, and content in detail. The description adds only marginal confirmation — the 10-embed cap (also in maxItems) and the optional-text placement (already stated in the content field description) — so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource — 'Send up to 10 embeds in a single message' — including the cardinality limit and the optional text companion. It further differentiates from the closest sibling by directing single-embed use to discord_send_embed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly names the alternative tool and the condition selecting it: 'Use discord_send_embed for a single embed.' It also states the required permissions (Send Messages and Embed Links), giving the agent actionable prerequisites before invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_send_pollA

Send a native Discord poll to a channel. Discord renders it with its own vote UI and tallies the results, so no third-party poll bot is needed. Requires the Send Polls permission. Returns the poll message ID and its answer labels.

NameRequiredDescriptionDefault
answersYesAnswer choices, 2 to 10 (max 55 characters each).
questionYesThe poll question (max 300 characters).
channel_idYesID (snowflake) of the channel or thread.
duration_hoursNoHow long the poll stays open, in hours (1 to 768). Discord defaults to 24.
allow_multiselectNoLet members pick several answers instead of one.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=true). The description adds useful context beyond that: the required permission and the return value (poll message ID and answer labels), though it omits rate-limit or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the core action, then value-add context, then permissions and return value. No waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a send tool with no output schema, the description covers the permission requirement and return shape (message ID, answer labels), which is enough for correct invocation. Minor gap: no mention of what happens if the channel has no poll support or invalid answers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters (question, answers, channel_id, duration_hours, allow_multiselect) are already documented in the schema. The description adds no parameter-level meaning, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (send) and a specific resource (native Discord poll) to a channel. The clarification that Discord renders its own vote UI and tallies results distinguishes it from generic message/embed 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Includes the 'Requires the Send Polls permission' prerequisite and frames the scenario (no third-party poll bot needed), but gives no explicit guidance on when to choose this over discord_send_message or discord_send_embed, nor any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_send_webhook_messageA

Send a message through a webhook using its ID and token (no bot permissions needed; the token authorizes the send). Supports per-message username/avatar overrides and up to 10 embeds. At least one of content or embeds is required. Returns the new message ID.

NameRequiredDescriptionDefault
embedsNoUp to 10 embed objects to attach to the webhook message.
contentNoPlain-text body of the message (max 2000 characters). Optional if embeds are provided.
usernameNoOverride the webhook's default display name for this message.
avatar_urlNoOverride the webhook's default avatar for this message.
webhook_idYesID (snowflake) of the webhook to send through.
webhook_tokenYesSecret token of the webhook (from discord_create_webhook or discord_list_webhooks).

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds useful behavioral context beyond the annotations: the token authorizes the send, no bot permissions are needed, content or embeds are required, and the message ID is returned. This meaningfully explains the operation's side effects and return value without contradicting 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: core action first, then feature highlights, then a critical validation rule, then the return value. Every sentence adds value and there is no redundant or vague wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich 100%-covered input schema and no output schema, the description provides the missing pieces: auth requirements, payload constraints, and return value. An agent has enough information to invoke this tool correctly and understand what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds the important cross-parameter constraint that at least one of content or embeds is required, which is not enforced by the schema's required fields. It also summarizes the username/avatar overrides and 10-embed limit, though those are already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states the specific action: send a message through a webhook using its ID and token, with no bot permissions needed. This clearly differentiates it from bot-token message tools like discord_send_message and from webhook management tools like discord_edit_webhook. The resource and mechanism are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use this tool: when you have a webhook ID and token and do not need bot permissions. It does not explicitly name alternative tools or state when not to use it, but the auth distinction makes the intended usage fairly evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_application_descriptionA
Idempotent

Change the owning application's description, shown on the OAuth2 authorization screen and in the developer portal. This is not the server's description (discord_set_guild_description). Requires the application to be owned by the token's owner. Returns the new description.

NameRequiredDescriptionDefault
descriptionYesNew application description (max 400 characters).

Output Schema

NameRequiredDescription
descriptionYes
application_idYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the bar is lower, yet the description adds real value: the ownership/authorization precondition and a statement of what the returned value is. It stops short of stating failure modes (e.g., what happens on invalid token or non-owned app) or the OAuth2 scope needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences: effect and where it appears first, disambiguation second, precondition and return third. Nothing is padding and the disambiguation is front-loaded enough to prevent the costly sibling confusion.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter setter with an output schema (so return format needn't be explained) and rich annotations, the description covers purpose, confusion risk, precondition, and return value. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter already documents the 400-character limit, so the schema does the work. The description adds no syntax, formatting, or content guidance beyond restating that the value becomes the visible description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Change the owning application's description') and locates the effect precisely (OAuth2 authorization screen, developer portal). It explicitly names the confusing sibling discord_set_guild_description and says this is not it, so an agent can distinguish the two 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative tool and the condition that selects it ('This is not the server's description (discord_set_guild_description)'), and states the prerequisite that the application must be owned by the token's owner. Both the when and the when-not are present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_application_iconA
Idempotent

Change the owning application's icon, which is what Discord shows in the OAuth2 authorization screen and in the developer portal. This is a different image from the bot's avatar and from the server icon. Requires the application to be owned by the token's owner. Accepts an https URL, data: URI or base64. Returns the new icon URL.

NameRequiredDescriptionDefault
imageYesAn image as an https URL, a data:image/png;base64,... URI, or a bare base64 string (PNG, JPEG, GIF or WebP, max 10 MB).

Output Schema

NameRequiredDescription
iconYes
application_idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=true). The description adds context annotations cannot carry: the ownership requirement that governs whether the call succeeds, and where the resulting image is surfaced. It does not describe failure/permission-error behaviour, which keeps it from 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the resource and its disambiguation, then the precondition, then the input/output contract. No filler, and the most decision-relevant fact (which icon this is) comes first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A single-parameter mutation tool with an output schema, so the description need not explain return values — yet it does, and it also covers the ownership precondition and accepted input forms. Only the absence of any note on failure modes or permission errors leaves a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter description already enumerates https URL, data URI and bare base64, plus formats and the 10 MB cap. The description restates the accepted encodings without adding constraints or examples beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Change the owning application's icon') and immediately disambiguates it from two near-neighbours in the sibling set: the bot avatar (discord_set_bot_avatar) and the server icon (discord_set_guild_icon). An agent can pick this tool without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete precondition for use ('Requires the application to be owned by the token's owner') and draws the boundary against the bot-avatar and guild-icon tools by describing where each image appears (OAuth2 consent screen, developer portal). It stops short of explicit when/when-not routing language, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_bot_avatarA
Idempotent

Change the bot's global avatar. This applies in every server and in DMs, and is not the same as the server's icon (discord_set_guild_icon) or the bot's per-server avatar (discord_set_bot_guild_avatar). Accepts an https URL, data: URI or base64; PNG, JPEG, GIF or WebP up to 10 MB. Returns the new avatar URL. WARNING: Discord rate-limits this endpoint; repeated calls will be throttled.

NameRequiredDescriptionDefault
imageYesAn image as an https URL, a data:image/png;base64,... URI, or a bare base64 string (PNG, JPEG, GIF or WebP, max 10 MB).

Output Schema

NameRequiredDescription
avatarYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=true, openWorld=true), and the description adds genuinely new behavioral context: global blast radius, the accepted input formats and 10 MB ceiling, the returned avatar URL, and a rate-limit warning about repeated calls being throttled. That rate-limit disclosure is exactly the kind of operational trait annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and scope, then follows with disambiguation, input constraints, return value, and the rate-limit warning in descending order of importance. Every sentence carries distinct information with no restatement of the name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A one-parameter mutation tool with full annotation coverage and an output schema is well served here: scope, alternatives, accepted formats, size cap, return value, and throttling risk are all disclosed. Nothing an agent needs to call it correctly and set expectations is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter has 100% schema description coverage, so the accepted formats and size limit are already documented in the schema. The description restates the same format list without adding syntax or edge-case detail (e.g. how bare base64 is distinguished from a data URI). Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ("Change the bot's global avatar") and immediately scopes it as global, applying in every server and DMs. It explicitly names the two most confusable siblings, discord_set_guild_icon and discord_set_bot_guild_avatar, so the agent can disambiguate without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the selection condition directly: use this for the bot's global avatar, use discord_set_guild_icon for the server icon and discord_set_bot_guild_avatar for a per-server avatar. That is an explicit alternative routing rule, not an implied one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_bot_guild_avatarA
Idempotent

Set the bot's per-server avatar, which overrides the global avatar in that one server. Requires the server to have the BANNER or ROLE_ICONS-adjacent boost feature set that Discord requires for per-guild member avatars; on a server without it Discord rejects the call. Accepts an https URL, data: URI or base64. Pass null to clear it and fall back to the global avatar. Returns the resulting per-server avatar URL.

NameRequiredDescriptionDefault
imageYesImage as a URL, data URI or base64, or null to clear.
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
guild_idYes
guild_avatarYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the server-side prerequisite ('Requires the server to have the BANNER or ROLE_ICONS-adjacent boost feature set') and that Discord rejects the call without it, which an agent cannot infer from readOnlyHint/idempotentHint. The prerequisite phrasing is hedged and imprecise ('-adjacent'), which softens an otherwise strong disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and the scope override, then prerequisites, then input formats and reset semantics. Every sentence carries information, but the prerequisite clause is wordy and slightly obscure for what it conveys.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers action, prerequisite, accepted input forms, reset behavior and return value, which is more than enough for a 3-parameter mutation with a full schema and an output schema. The only gap is that the boost prerequisite is described imprecisely, so an agent may not know exactly how to verify eligibility.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds the consequence the schema omits: null does not merely clear, it falls back to the global avatar, and the accepted image forms are restated as a coherent input contract. Marginal but real value on top of the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set the bot's per-server avatar') and immediately defines the scope distinction that matters: it overrides the global avatar in one server only. That separates it cleanly from discord_set_bot_avatar without the agent needing to open either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear conditions for use (per-server override vs global fallback) and an explicit reset path ('Pass null to clear it and fall back to the global avatar'). It does not name discord_set_bot_avatar directly as the alternative, so the routing is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_bot_nicknameA
Idempotent

Change the bot's own nickname in one server. This is per-server: it does not affect the bot's name in other servers, nor its global username. Pass null to clear the nickname and fall back to the global username. Requires the Change Nickname permission for the bot itself, or Manage Nicknames if changing on its own behalf is restricted. Returns the previous and new nickname.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).
nicknameYesNew nickname (max 32 characters), or null to clear it.

Output Schema

NameRequiredDescription
guild_idYes
nicknameYes
previous_nicknameYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the annotations (readOnly=false, idempotent=true, destructive=false) by disclosing the exact permission requirements (Change Nickname, or Manage Nicknames if restricted on its own behalf), the null-clearing fallback behavior, and the returned previous/new nickname pair. These are the operational facts an agent needs before a mutation call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each carrying distinct information, with scope stated first and the operational details after. Slightly denser than necessary — the permission clause is long — but nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers scope, permissions, null semantics, and return values for a three-parameter mutation tool; an output schema exists, so return shape needs no further detail. Nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics: null is a meaningful sentinel that reverts to the global username rather than an invalid input. The optional 'reason' audit-log parameter is left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with an explicit scope qualifier: 'Change the bot's own nickname in one server.' The 'bot's own' and 'per-server' framing separates it cleanly from discord_set_nickname (other members) and discord_set_bot_username (global), without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Makes the selection condition clear through scope: per-server only, does not touch the global username, and null clears the nickname. It does not explicitly name the sibling to use for global changes (discord_set_bot_username) or for other members (discord_set_nickname), so routing is inferable but not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_bot_usernameA
Idempotent

Change the bot's global username. WARNING: this is the most rate-limited endpoint Discord offers (roughly two changes per hour), it applies in every server, and Discord may reject names that are taken or reserved. If the call is throttled it will fail with a 429 and you must wait. This does not change the server name or the bot's nickname. Returns the new username.

NameRequiredDescriptionDefault
usernameYesNew global username (2–32 characters).

Output Schema

NameRequiredDescription
usernameYes
previous_usernameYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses the rate limit magnitude (~two changes per hour), global blast radius across all servers, name-rejection behavior, and the 429 failure mode requiring a wait. Annotations only say readOnly=false, idempotent=true, openWorld=true, destructive=false; the throttling and rejection semantics are the genuinely useful additions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded verb statement followed by the warning, scope, failure mode, exclusions, and return value. Four sentences, no repetition, and the highest-risk information (rate limit, global effect) appears early.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers mutation semantics, rate limits, failure handling, scope, sibling exclusions, and even the return value despite an output schema existing. Nothing an agent needs before invoking a single-parameter, high-consequence write is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter already documents its 2–32 character constraint, so the description adds no parameter-level detail. Baseline 3 is appropriate given the schema does all the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource and scoped object ('Change the bot's global username'), then explicitly rules out the two most confusable siblings: the server name (discord_set_guild_name) and the bot's nickname (discord_set_bot_nickname). An agent can pick the right tool without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives strong operational context: it applies in every server, is heavily throttled (~2/hour), may be rejected for taken/reserved names, and fails with 429 when throttled. The exclusions point toward alternatives for nickname/server-name changes, though it never names those sibling tools explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_channel_positionA
Idempotent

Set a channel's display order within its category. Use discord_move_channel to change which category it belongs to. Requires the Manage Channels permission. Returns a confirmation.

NameRequiredDescriptionDefault
positionYesZero-based position within the category (0 = top).
channel_idYesID (snowflake) of the channel to reposition.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a mutating, non-destructive, idempotent operation. The description adds useful behavioral context beyond those annotations: the permission requirement, that a confirmation is returned, and the constraint that this only changes ordering within a category.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler. The main purpose is stated first, the differentiating sibling is mentioned second, and the permission and return value complete the picture efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with fully documented schema and clear annotations, the description is complete: it explains what it does, how it differs from the related tool, what permission is needed, and what response to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already fully documented in the input schema. The description reinforces that position applies within a category but does not add significant new parameter-level meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Set'), a specific resource ('a channel's display order'), and the scope ('within its category'). It clearly distinguishes this from the sibling tool discord_move_channel, which changes category membership rather than ordering.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly names the alternative tool (discord_move_channel), states exactly when it should be used instead, and lists the required permission (Manage Channels). This leaves no ambiguity about when to invoke this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_forum_tagsA
DestructiveIdempotent

Replace the full set of available tags on a forum channel with the provided list. This overwrites existing tags, so include every tag you want to keep. Requires the Manage Channels permission. Returns a confirmation.

NameRequiredDescriptionDefault
tagsYesComplete list of tags to set (replaces all existing tags).
forum_channel_idYesID (snowflake) of the forum channel to set tags on.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructiveHint, readOnlyHint false), the description explains exactly what is destroyed: all existing tags are overwritten. It also discloses the required permission and that a confirmation is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: main action, overwrite warning, permission/return value. It is front-loaded and contains no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter mutation with full schema coverage and annotations, the description is complete: it covers the destructive effect, required permission, and return behavior. No output schema exists, but 'Returns a confirmation' fills that gap adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters. The description's 'include every tag you want to keep' reinforces the tags parameter but does not add meaning beyond the schema's 'replaces all existing tags' wording.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Replace the full set of available tags on a forum channel with the provided list.' This clearly distinguishes it from the read-only sibling discord_get_forum_tags and from post-level tag operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the overwrite behavior and warns to include every tag to keep, which tells an agent when this replacement tool is appropriate. It also gives a prerequisite (Manage Channels permission). It does not explicitly name alternative tools for read-only tag retrieval, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_guild_bannerA
Idempotent

Set or replace the server's banner, the wide image shown at the top of the server's landing page. IMPORTANT LIMITATION: Discord only renders a guild banner when the server has the BANNER feature (boost level 2+). Without it, Discord rejects the call with an error rather than accepting and hiding it. Requires Manage Server. Returns the new banner URL.

NameRequiredDescriptionDefault
imageYesAn image as an https URL, a data:image/png;base64,... URI, or a bare base64 string (PNG, JPEG, GIF or WebP, max 10 MB).
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
bannerYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses that Discord rejects the call outright rather than silently ignoring it when the BANNER feature is absent, and states the required permission. It also reports the return value, which is extra context on top of the already-declared idempotent and non-destructive hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the action, then the critical limitation, then the prerequisite and return value. No filler and each sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-field mutation with full schema coverage and an output schema, this covers everything an agent needs: what it does, the gating feature requirement, permission scope, failure mode, and result. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so image format/size, guild_id snowflake pattern, and the audit-log reason are already fully documented in the schema. The description adds no parameter-level detail beyond mentioning the return URL, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set or replace the server's banner') and immediately clarifies what a banner is (the wide image on the landing page). This cleanly distinguishes it from siblings like discord_set_guild_icon and discord_remove_guild_banner.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions for use: Manage Server permission and the BANNER feature (boost level 2+). It clearly implies when not to bother (servers without the feature will error), but never explicitly names the sibling alternative such as discord_remove_guild_banner or discord_set_guild_splash.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_guild_channelsA
Idempotent

Point the server's special channel slots at specific channels: the AFK channel and timeout, the system channel (where join/boost notices post), the rules channel, the public updates channel, and the safety alerts channel. Only provided slots change. The rules, public-updates and safety-alerts slots require the COMMUNITY feature; Discord rejects them otherwise. AFK must be a voice channel. Requires Manage Server. Returns the resulting slot IDs.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).
afk_timeoutNoSeconds of inactivity before moving a member to AFK (60–3600). Discord rounds down to 60/300/900/1800/3600.
afk_channel_idNoChannel ID (snowflake), or null to clear the slot. The channel must be the right kind for the slot: voice for AFK, text or announcement for system/rules.
rules_channel_idNoChannel ID (snowflake), or null to clear the slot. The channel must be the right kind for the slot: voice for AFK, text or announcement for system/rules.
system_channel_idNoChannel ID (snowflake), or null to clear the slot. The channel must be the right kind for the slot: voice for AFK, text or announcement for system/rules.
safety_alerts_channel_idNoChannel ID (snowflake), or null to clear the slot. The channel must be the right kind for the slot: voice for AFK, text or announcement for system/rules.
public_updates_channel_idNoChannel ID (snowflake), or null to clear the slot. The channel must be the right kind for the slot: voice for AFK, text or announcement for system/rules.

Output Schema

NameRequiredDescription
idYes
afk_timeoutYes
afk_channel_idYes
rules_channel_idYes
system_channel_idYes
safety_alerts_channel_idYes
public_updates_channel_idYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly=false, idempotent=true, openWorld=true, destructive=false; the description adds genuinely new behavioral facts — partial-update semantics, a feature-gated failure mode, per-slot channel-type validation, the Manage Server permission requirement, and that the resulting slot IDs are returned. That is exactly the context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the resource and slot list, then partial-update semantics, then constraints and return value. No filler or restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation with an output schema, everything an agent needs is present: scope, prerequisites, per-slot validation, permission requirement, and partial-update behavior. Return handling is delegated to the output schema, which the description only briefly flags.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the per-parameter descriptions already explain snowflake format, null-to-clear, channel-kind constraints, and the AFK timeout rounding. The description restates the slot list and the voice requirement for AFK but adds little syntax or meaning beyond what the schema already supplies, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — pointing the guild's special channel slots (AFK, system, rules, public updates, safety alerts) at concrete channels — and enumerates exactly which slots are in scope. An agent can distinguish this from siblings like discord_set_system_channel_notices or discord_enable_community without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear preconditions and exclusions: 'Only provided slots change', the COMMUNITY-feature requirement for rules/public-updates/safety-alerts with the consequence that Discord rejects them otherwise, AFK must be a voice channel, and Manage Server is required. It does not explicitly route the agent to or away from specific sibling tools, which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_guild_descriptionA
Idempotent

Set or clear the server's description (the blurb shown on the server's landing page and in discovery). IMPORTANT LIMITATION: Discord only accepts a guild description when the server has the COMMUNITY feature. On a server without it, the call is rejected: call discord_enable_community first, or accept that this field cannot be set. Requires Manage Server. Pass null to clear it.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).
descriptionYesNew description (max 300 characters), or null to clear it.

Output Schema

NameRequiredDescription
idYes
descriptionYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the mutation/safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), and the description adds substantial context beyond them: the COMMUNITY-feature gate, the Manage Server permission requirement, and the fact that null clears rather than errors. It doesn't discuss the audit-log reason parameter's effect, but the schema covers that and the gaps are minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with purpose and then the highest-risk constraint flagged explicitly. The limitation is placed before the permission note, matching what an agent most needs to check first. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation. Between the description (preconditions, permissions, clear semantics) and the schema (types, length cap, audit reason), an agent has everything needed to call this correctly or to route to discord_enable_community.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds value by surfacing the null-clears semantics at the tool level ('Pass null to clear it'), which is the non-obvious behavior an agent most needs to get right. It repeats the schema's 300-char and null hints rather than extending them, so it stops short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair and resource — 'Set or clear the server's description' — and parenthetically defines what that field actually is ('the blurb shown on the server's landing page and in discovery'). This is easily distinguished from siblings like discord_set_guild_name or discord_set_application_description, which target different objects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the precondition (guild must have the COMMUNITY feature), the failure mode (call is rejected), and the remediation path ('call discord_enable_community first, or accept that this field cannot be set'). It also states the required permission (Manage Server). An agent knows exactly when this will fail and what to do instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_guild_iconA
Idempotent

Replace the server's icon (the square image shown next to the server name). This is the guild icon; the bot's own avatar is changed with discord_set_bot_avatar. Accepts an https URL, a data: URI or base64. Requires Manage Server. Discord rejects images that are not PNG, JPEG, GIF or WebP or that exceed 10 MB. Returns the new icon URL.

NameRequiredDescriptionDefault
imageYesAn image as an https URL, a data:image/png;base64,... URI, or a bare base64 string (PNG, JPEG, GIF or WebP, max 10 MB).
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
iconYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which only say non-read-only, non-destructive, idempotent, open-world), the description adds the Manage Server permission requirement, the accepted image formats, the 10 MB rejection threshold, and the return value. These are exactly the failure modes an agent needs to avoid a rejected call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, followed by disambiguation, then input constraints, then return value — a sensible order with no filler. The format/size sentence partially duplicates the image parameter's schema description, which is the only wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, the sibling it is confused with, permissions, input encoding options, validation limits, and the return value; an output schema also exists so return details are already backed. Nothing an agent needs to invoke this mutation correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the image parameter already documents the https URL / data URI / bare base64 forms and the format and size limits, so the description largely restates schema content. No additional semantics are added for guild_id or the audit-log reason parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Replace the server's icon') and immediately disambiguates which icon by naming the sibling that changes a different one (discord_set_bot_avatar). An agent can distinguish it from discord_remove_guild_icon or discord_set_guild_banner without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative tool for the bot avatar and states the permission prerequisite, which frames when this tool is the right choice. It does not explicitly point at discord_remove_guild_icon for the inverse operation, so it stops short of full when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_guild_localeA
Idempotent

Set the server's preferred language, which controls the language of Discord's own system messages and the default for members who have not chosen one. Requires Manage Server. Returns the previous and new locale.

NameRequiredDescriptionDefault
localeYesA Discord locale code such as 'fr', 'en-US', 'de' or 'ja'.
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
localeYes
previous_localeYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it is a non-destructive, idempotent mutation with open-world scope, so the safety profile is covered. The description adds value beyond that by disclosing the permission requirement and stating that the previous and new locale are returned, useful for confirmation or rollback reasoning.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero waste: purpose and effect first, prerequisite and return value second. Everything is front-loaded and each clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and rich annotations, the description covers the essentials: what changes, who can do it, and what comes back. Minor omissions like the audit-log 'reason' parameter and idempotency behavior are already handled by structured fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so guild_id, locale, and reason are fully documented in the schema; baseline 3 applies. The description adds conceptual meaning for locale (what it governs) but no syntax or format detail beyond the schema's example codes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set the server's preferred language') and immediately clarifies the scope of what that setting affects (Discord system messages and the default for members without one). This is distinguishable from siblings like discord_set_guild_name or discord_set_system_channel_notices 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides the key prerequisite ('Requires Manage Server') and explains the effect context, which tells an agent when this is the right tool. It stops short of naming alternatives or stating when not to use it (e.g. that per-member locale is not changed here).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_guild_nameA
Idempotent

Change the server's name. This is the guild name shown at the top of the server list, not the bot's own name and not the bot's nickname in this server (use discord_set_bot_nickname for that). Requires Manage Server. Returns the previous and new name.

NameRequiredDescriptionDefault
nameYesNew server name (2–100 characters).
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
nameYes
previous_nameYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the mutation/safety profile is covered. The description adds context the annotations don't: the Manage Server permission requirement and the fact that it returns both the previous and new name. It does not discuss what happens to name uniqueness constraints or rate limits, hence 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and the primary disambiguation, then the permission requirement and return value. Every clause earns its place — the parenthetical is the most valuable disambiguation in the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so explaining return values is optional, and the description still summarizes them; it also flags the required permission. What remains unstated is failure behavior (e.g. name rejection/validation errors) for a mutation on an open-world API, a minor but real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so guild_id, name (with its 2–100 length bound) and the audit-log reason are already documented in structured fields. The description adds only a conceptual clarification that 'name' means the guild name, not syntax or format detail beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Change the server's name') and immediately disambiguates which 'name' — the guild name in the server list — from the bot's own name and its nickname. It names the sibling discord_set_bot_nickname for the alternative case, so an agent can separate this from the many other name-related tools 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the nickname case to discord_set_bot_nickname and states the 'Requires Manage Server' prerequisite, which is real selection guidance. The positive when-to-use case (renaming a server) is only implied by the verb rather than called out, and no other alternatives (e.g. icon/banner/description settings) are referenced.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_guild_safetyA
Idempotent

Update the server's safety and moderation settings in one call: verification level, explicit content filter, default notification level, and the age-restricted (NSFW) content gate. Only provided fields change. Setting verification_level to high or very_high requires the server to be verified or partnered, otherwise Discord rejects it. Requires Manage Server. Returns the applied values.

NameRequiredDescriptionDefault
nsfwNoMark the whole server as age-restricted (true) or safe (false). Discord derives the NSFW level from this flag.
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).
verification_levelNoHow much proof a new member must provide before they can talk. 'high' and 'very_high' require a verified/partnered server.
explicit_content_filterNoWhich members Discord scans media for.
default_message_notificationsNoDefault notification level for newly joined members.

Output Schema

NameRequiredDescription
idYes
verification_levelYes
explicit_content_filterYes
default_message_notificationsYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly=false, idempotent=true, and destructive=false, but the description adds real value: auth needs (Manage Server), a concrete server-side rejection condition, partial-update behavior, and that applied values are returned. It omits that raising the verification level can lock out existing members, which is the main blast-radius concern for this mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what the call changes, then constraints, then return behavior — four tight sentences with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return values (it still notes them briefly), and with full schema coverage and annotations, everything an agent needs to invoke this correctly — permissions, conditional failure, partial-update behavior — is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including enums is already documented. The description restates the four settable fields and repeats the verification_level caveat that the schema also states, adding no new syntax or value semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) plus resource (server safety/moderation settings) and enumerates the exact four settings affected, so it is not confusable with discord_set_guild_channels or discord_update_membership_screening. It never names those adjacent siblings, so the differentiation is inferential rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the key operational rules: 'Only provided fields change' (partial-update semantics), 'Requires Manage Server' (prerequisite), and the verified/partnered requirement for high/very_high verification. It does not offer exclusions or name an alternative tool for related operations like AutoMod or membership screening.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_guild_splashA
Idempotent

Set or remove the server's invite splash, the background shown on the invite page. Requires the INVITE_SPLASH feature (boost level 1+) and Manage Server. Pass null to remove it. Returns the new splash URL.

NameRequiredDescriptionDefault
imageYesImage as a URL, data URI or base64, or null to remove.
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
splashYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare mutation, idempotency, and lack of destructiveness, but the description adds the auth/feature-gate requirements (Manage Server, boost level 1+ INVITE_SPLASH) that annotations cannot convey. It also states the removal path and that it returns the new splash URL, which is meaningful behavioral context beyond 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short clauses, front-loaded with the verb and resource, then prerequisites, then the null-removal behavior, then the return value. No sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return-value explanation isn't strictly required, yet the description still notes the returned splash URL. Permissions, feature gate, removal semantics, and behavior are all covered for this low-param mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the image format details live in the schema. The description's 'Pass null to remove it' adds emphasis but largely restates what the schema's anyOf[null] and description already document. Baseline 3 applies given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair and resource ('Set or remove the server's invite splash') and explains what it is ('background shown on the invite page'). An agent can immediately tell it apart from sibling tools like discord_set_guild_banner or discord_set_guild_icon.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit prerequisites ('Requires the INVITE_SPLASH feature (boost level 1+) and Manage Server') and the removal condition ('Pass null to remove it'). It doesn't name an alternative tool, but no sibling performs this same operation, so the guidance is clear in context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_guild_widgetA
Idempotent

Configure the server's embeddable widget: whether it is enabled and which channel it exposes. Enabling the widget publishes a live member list and online count to anyone with the widget URL, so treat it as a privacy decision. Requires Manage Server. Returns the resulting settings. Use discord_get_guild_widget to read the current state and the public URLs.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the audit log.
enabledYesTrue to enable the widget, false to disable it.
guild_idYesDiscord server (guild) ID (snowflake).
channel_idNoChannel the widget points at, or null for none.

Output Schema

NameRequiredDescription
idYes
enabledYes
channel_idYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the annotations: it discloses that enabling publishes a live member list and online count to anyone with the widget URL, states the required permission (Manage Server), and declares the return ('Returns the resulting settings'). The annotations cover the safety profile (readOnly=false, idempotent, non-destructive), and the description adds the real-world side effect they don't capture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: scope first, consequence second, permission third, alternative last. No filler, and the most decision-relevant fact (public member list exposure) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with an output schema, this covers the prerequisites (Manage Server), the side effect, the idempotent nature, the return, and the sibling for reads. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful semantics: 'enabled' is not just a boolean toggle but a privacy exposure decision, and 'channel_id' is framed as the channel the widget points at. It doesn't restate the audit-log 'reason' param, but nothing important is lost.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb + resource: 'Configure the server's embeddable widget: whether it is enabled and which channel it exposes.' It also explicitly separates itself from discord_get_guild_widget, so an agent can tell read from write without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the read alternative explicitly ('Use discord_get_guild_widget to read the current state and the public URLs') and frames the enabling decision as a privacy choice, which is the key when-to-use/when-to-hesitate signal for this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_member_permissionA
Idempotent

Add or update a per-channel permission overwrite for a single member, allowing and/or denying specific permissions. Merges with the member's existing overwrite. Requires the Manage Roles permission. Use discord_set_role_permission to target a whole role instead.

NameRequiredDescriptionDefault
denyNoPermission flag names to deny (array, or JSON-encoded array string).
allowNoPermission flag names to allow, e.g. ['ViewChannel'] (or the same array JSON-encoded as a string). Uses Discord PermissionsBitField flag names.
reasonNoOptional reason recorded in the server audit log.
user_idYesID (snowflake) of the member to grant/deny permissions for.
channel_idYesID (snowflake) of the channel to set the overwrite on.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=true), the description adds meaningful behavioral context: it merges with the member's existing overwrite rather than replacing it, and it requires the Manage Roles permission. This gives the agent a solid understanding of the write behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences with no filler: the core action, key behavioral detail, permission requirement, and sibling alternative are all included. The most important scoping information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a permission-overwrite tool with rich schema coverage and no output schema, the description covers the essential invocation context: what it does, the merge semantics, the permission prerequisite, and when to use the sibling tool. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents channel_id, user_id, allow, deny, and reason thoroughly. The description reinforces that allow/deny accept specific permission flags and that the operation merges, but it does not need to add much parameter detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Add or update'), a precise resource ('per-channel permission overwrite for a single member'), and the effect ('allowing and/or denying specific permissions'). It also distinguishes itself from the role-targeted sibling tool, making it easy to select correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly names the required 'Manage Roles' permission, which is essential preconditions information. It also gives a clear routing instruction: use discord_set_role_permission when targeting a whole role instead. This is direct, actionable guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_membership_gateA
Idempotent

Turn the membership screening gate on or off by adding or removing the MEMBER_VERIFICATION_GATE_ENABLED feature. LIMITATION, verified against a live server: Discord returns HTTP 200 but silently ignores an API request to ADD this feature, so enabling it from here does not work. It must be turned on once by hand in the Discord client (Server Settings > Safety Setup > Membership Screening). Disabling it through this tool does work. The returned 'enabled' field always reflects the real state after the call, so treat enabled:false as Discord having refused. Requires the COMMUNITY feature and Manage Server.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the audit log.
enabledYestrue to gate new members behind the screening form, false to stop gating.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
enabledYes
featuresYes

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses the verified silent-failure bug (HTTP 200 but ignored ADD), which direction works, that the returned 'enabled' field reflects true post-call state, and that enabled:false means Discord refused. It also states prerequisites (COMMUNITY feature and Manage Server) — behavior an agent cannot infer from the readOnly/idempotent/destructive hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause, followed by the critical limitation and prerequisites. It is dense but every sentence carries actionable information (failure mode, workaround, return interpretation, permissions); only the 'verified against a live server' framing adds slight verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 100% schema coverage and an output schema available, the description needn't restate parameters or returns, yet it usefully adds the one thing the schema can't convey: the silent-ignore failure mode and how to read enabled:false. Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters (guild_id, enabled, reason) are already documented. The description adds practical meaning around the 'enabled' outcome (enabled:false = refusal), but that is more return-value interpretation than input semantics, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource and mechanism: turn the membership screening gate on/off by adding/removing the MEMBER_VERIFICATION_GATE_ENABLED feature. This is clearly distinct from editing the screening form, but it never names the sibling tools (e.g. discord_update_membership_screening) that a confused agent might reach for, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a strong when-not-to-use signal: explicitly warns that enabling via API is silently ignored and must be done manually in the client, and that only disabling works here. It lacks an explicit named alternative tool for the enable case, but the operational guidance about when this tool will and won't succeed is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_nicknameA
Idempotent

Set or clear a member's server nickname. Pass null (or the string 'null') to clear it. Requires the Manage Nicknames permission (or Change Nickname for the bot itself). The reason is recorded in the audit log.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the server audit log.
user_idYesDiscord user ID (snowflake) of the member.
guild_idYesDiscord server (guild) ID (snowflake).
nicknameYesNew nickname (max 32 characters), or null to clear it.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description reveals the null/string-'null' clearing behavior, the audit-log side effect of the reason, and the permission requirements. These are exactly the kind of behavioral details an agent needs that are not visible in the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded sentences contain the action, the edge behavior, the permission requirement, and the audit-log effect with no filler. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation tool, the description covers what the action does, how to clear, who may call it, and a key side effect. The schema supplies the parameter formats, so no critical information needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by explicitly stating that null or the string 'null' clears the nickname, an edge case not clear from the schema alone, and confirms the audit-log role of the reason parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Set or clear a member's server nickname,' which precisely states the action and target. It also clarifies the clear behavior and distinguishes the tool from permission/role-related siblings such as discord_set_member_permission.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear operating context: it is the tool to use for nickname changes, and it states the permission prerequisites ('Manage Nicknames' or 'Change Nickname for the bot itself'). It does not explicitly name alternatives or when-not-to-use conditions, so it stops one step short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_onboardingA
Idempotent

Configure the server's onboarding flow: enable or disable it, pick the default channels new members see, and define the prompts with their options (each option can grant roles and point at channels). Requires the COMMUNITY feature and Manage Server. LIMITATION: Discord requires at least seven default channels and one prompt with at least one option for advanced mode; an incomplete configuration is rejected. Replaces the prompt list wholesale when provided. Returns the resulting configuration.

NameRequiredDescriptionDefault
modeNo'default' keeps Discord's built-in prompts; 'advanced' uses the ones you supply.
reasonNoOptional reason recorded in the audit log.
enabledNoEnable or disable onboarding.
promptsNoOnboarding prompts. Replaces the existing set.
guild_idYesDiscord server (guild) ID (snowflake).
default_channel_idsNoChannels new members are dropped into. Discord requires at least 7 for advanced mode.

Output Schema

NameRequiredDescription
modeYes
enabledYes
prompt_countYes
default_channel_idsYes

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the required guild feature and permission, the hard validation constraints (seven default channels, one prompt with at least one option in advanced mode), and the replace-wholesale semantics of the prompts array — a side effect the agent could not infer from destructiveHint=false alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then prerequisites, then the LIMITATION marker, then side effects. Four sentences all carry information; the final sentence about the return value is redundant given the output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with an output schema, the description covers permissions, feature gating, validation limits, and replacement semantics — everything needed to call it without a surprise failure. The one gap is not directing the agent to read the existing configuration before overwriting it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds the advanced-mode validation rule that ties default_channel_ids and prompts together, but most parameter meaning (mode enum, reason, enabled, nested prompt fields) is already fully documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ("Configure the server's onboarding flow") and enumerates the three things it controls: enablement, default channels, and prompts with options. It is clearly distinct from the read-only sibling discord_get_onboarding, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the prerequisites (COMMUNITY feature, Manage Server) and the validation rules Discord enforces, which tells an agent when the call will fail. It does not advise reading the current state via discord_get_onboarding first, nor does it say when to prefer 'default' over 'advanced' mode beyond the schema's own wording.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_premium_progress_barA
Idempotent

Show or hide the boost progress bar in the server's channel list. Requires Manage Server. Returns the resulting value.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the audit log.
enabledYesTrue to show the boost progress bar, false to hide it.
guild_idYesDiscord server (guild) ID (snowflake).

Output Schema

NameRequiredDescription
idYes
premium_progress_bar_enabledYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the description's contribution is the Manage Server permission requirement and the note that the resulting value is returned. That permission prerequisite is genuine added value, but nothing is said about failure modes (missing boost tier, permission errors) or audit-log behavior beyond the schema's own note.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the operation, then the prerequisite, then the return. Every sentence carries distinct information and none of it is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the return statement need not be expanded, and annotations plus a fully documented 3-parameter schema cover the rest. The description supplies purpose and authorization; only edge-case behavior (no boost tier, revert semantics) is absent, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so `guild_id`, `enabled`, and `reason` are all documented in the schema itself, including the snowflake pattern and audit-log semantics. The description adds no parameter-level detail beyond a restatement of the enabled toggle, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb pair and a specific resource scoped to the server's channel list ("Show or hide the boost progress bar in the server's channel list"), which is unambiguous. No sibling tool in the list touches boost/premium settings, so differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the practical precondition for invocation ("Requires Manage Server") and the toggle semantics, so an agent knows when it is applicable. It offers no explicit exclusion or alternative-tool routing, but no sibling offers an overlapping capability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_role_iconA
Idempotent

Set or clear a role's icon, either a custom image or a unicode emoji. Requires the server to be Boost Level 2+ (the ROLE_ICONS feature) and the Manage Roles permission. Pass null to either field to remove that icon. Returns a confirmation.

NameRequiredDescriptionDefault
iconNoImage URL for the role icon, or null to remove it.
role_idYesID (snowflake) of the role to set the icon on.
guild_idYesDiscord server (guild) ID (snowflake).
unicode_emojiNoUnicode emoji to use as the role icon, or null to remove it.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=true), and the description adds environment preconditions and the clearing behavior that annotations cannot express. 'Returns a confirmation' is a useful hint given no output schema exists. It does not address rate limits or what happens if both icon fields are supplied at once.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action before prerequisites and the removal rule. 'Returns a confirmation' is thin but brief; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter idempotent mutation tool with full annotation coverage and no output schema, the description covers action, prerequisites, clearing semantics and response type. The main residual gap is the interaction between the two icon fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so role_id, guild_id, icon and unicode_emoji are already documented, and the null-to-remove note duplicates the schema text almost verbatim. The description hints at mutual exclusivity ('either a custom image or a unicode emoji') but never resolves whether both fields may be passed simultaneously, leaving the one genuinely ambiguous aspect unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair (set or clear) and resource (a role's icon), plus the two accepted icon kinds (custom image URL or unicode emoji). An agent understands the operation without opening the schema, though it never distinguishes itself from siblings like discord_edit_role or discord_delete_role that could also touch role appearance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete prerequisites (Boost Level 2+ / ROLE_ICONS feature, Manage Roles permission) and explains the removal path ('Pass null to either field'). It stops short of naming an alternative tool or saying when to prefer this over editing the role through discord_edit_role.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_role_permissionA
Idempotent

Add or update a per-channel permission overwrite for a role, allowing and/or denying specific permissions. Merges with the role's existing overwrite (does not reset it). Denying View Channel to @everyone also locks the bot out unless it holds an allow overwrite of its own; grant that with discord_set_member_permission before the deny. Requires the Manage Roles permission. Use discord_set_member_permission to target a single member instead.

NameRequiredDescriptionDefault
denyNoPermission flag names to deny, e.g. ['SendMessages'] (or the same array JSON-encoded as a string).
allowNoPermission flag names to allow, e.g. ['SendMessages','ViewChannel'] (or the same array JSON-encoded as a string). Uses Discord PermissionsBitField flag names.
reasonNoOptional reason recorded in the server audit log.
role_idYesID (snowflake) of the role to grant/deny permissions for.
channel_idYesID (snowflake) of the channel to set the overwrite on.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses that the operation merges with the existing overwrite rather than resetting it, requires the Manage Roles permission, and that denying View Channel to @everyone locks out the bot unless a separate allow overwrite is granted first. This meaningfully informs the agent of side effects and prerequisites, and does not contradict the idempotentHint or destructiveHint annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences long and every sentence earns its place: purpose, merge semantics, a critical bot-lockout warning with mitigation, the required permission, and the relevant sibling alternative. It is front-loaded with the core action and wastes no words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool without an output schema, the description is remarkably complete: it explains what the tool does, how it behaves on existing overwrites, the required permission, a dangerous edge case, and how to route to the member-targeting sibling. No critical operational guidance appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% parameter coverage, including descriptions for allow, deny, reason, role_id, and channel_id. The description adds no new parameter-level detail beyond referencing 'allowing and/or denying specific permissions,' so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Add or update a per-channel permission overwrite for a role.' It clearly distinguishes this from member targeting by directing to discord_set_member_permission, and the 'Merges with the role's existing overwrite' note adds crucial scoping.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context including the required 'Manage Roles' permission and an explicit alternative: 'Use discord_set_member_permission to target a single member instead.' It also warns about a high-risk case (denying View Channel to @everyone) and how to avoid it, though it does not enumerate all related permission-management siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_role_positionA
Idempotent

Move a role up or down in the server's role hierarchy, which determines permission precedence and member-list ordering. Higher position = higher in the list. Requires the Manage Roles permission, and the target position must be below the bot's highest role.

NameRequiredDescriptionDefault
role_idYesID (snowflake) of the role to reposition.
guild_idYesDiscord server (guild) ID (snowflake).
positionYesNew hierarchy position (1 = lowest, just above @everyone, which sits at 0). Higher numbers rank higher.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, which already indicate a non-read-only, non-destructive, idempotent operation, the description discloses the permission requirement, the role-hierarchy constraint, and the behavioral consequence of moving the role. This gives the agent a clear model of what will happen and what conditions must hold before invoking the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads the core action and effect, and includes only high-value operational details. There is no filler, repetition of the tool name, or redundant schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given three required parameters, full schema coverage, and no output schema, the description covers the key call-side knowledge: what the operation does, how position works, what permission is needed, and the critical hierarchy constraint. Nothing essential for correctly selecting and invoking the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all three parameters with 100% coverage, including the position semantics. The description adds operational meaning to the position parameter by explaining that higher means higher in the list and by adding the constraint that the target position must be below the bot's highest role — information not present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Move') and resource ('role') and clearly explains the effect on the server's role hierarchy, including permission precedence and member-list ordering. It is immediately distinguishable from siblings like discord_set_role_permission and discord_edit_role because it focuses solely on repositioning a role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear operational context: when repositioning a role in the hierarchy, it affects permission precedence and ordering. It also states important prerequisites — Manage Roles permission and the constraint that the target position must be below the bot's highest role — though it does not explicitly name alternative tools or say when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_system_channel_noticesA
Idempotent

Toggle which automatic notices the system channel posts: join notifications, join-notification replies, boost/boost-tier messages, the 'server setup tips' reminder, and role-subscription purchase messages. Only provided flags change. Requires Manage Server. Returns the resulting flag set.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the audit log.
guild_idYesDiscord server (guild) ID (snowflake).
join_notificationsNoPost a message when a member joins.
premium_subscriptionsNoPost boost messages when someone boosts the server.
join_notification_repliesNoAllow members to reply to the join message with a wave.
role_subscription_repliesNoAllow replies to role-subscription purchase messages.
role_subscription_purchasesNoPost messages when someone buys a role subscription.
guild_reminder_notificationsNoPost the 'server setup tips' reminder in the system channel.

Output Schema

NameRequiredDescription
idYes
enabled_noticesYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnly=false, idempotent=true, destructive=false, openWorld=true) the description adds three genuinely useful facts: the Manage Server permission requirement, the partial-update semantics ("Only provided flags change"), and that the resulting flag set is returned. What it does not say is whether omitting a flag leaves it untouched on the system channel or how the change is audited, though the audit-log `reason` param covers part of that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: scope first, mutation semantics second, permission/return last. Zero redundancy and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the input schema is fully documented; combined with the enumerated flags, permission requirement, and partial-update rule, an agent has everything needed to invoke this correctly. Nothing material is missing for an 8-param settings toggle.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does group the flags into recognizable categories (join notifications, boosts, setup tips, role-subscription purchases), which adds some framing, but it omits `role_subscription_replies` and `reason` entirely and adds no format or interaction details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Toggle which automatic notices the system channel posts") and enumerates exactly which notices are covered, so an agent can map it to the intent without opening the schema. No sibling tool touches system-channel notices, and the flag list makes the scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Only provided flags change" and "Requires Manage Server" give useful call context, but there is no when-to-use guidance relative to alternatives — e.g. reading current values via discord_get_guild_settings or neighbouring guild-setting tools is never mentioned. Usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_set_welcome_screenA
Idempotent

Configure the server's welcome screen: enable or disable it, set the headline description, and list the recommended channels with a one-line blurb each. Requires the COMMUNITY feature and Manage Server. LIMITATION: Discord requires the description to be non-empty and at least one recommended channel when the screen is enabled. Replaces the channel list wholesale when provided. Returns the resulting screen.

NameRequiredDescriptionDefault
enabledNoEnable or disable the welcome screen.
guild_idYesDiscord server (guild) ID (snowflake).
descriptionNoHeadline shown at the top (max 140 chars).
welcome_channelsNoRecommended channels (Discord allows up to 5). Replaces the existing list.

Output Schema

NameRequiredDescription
enabledYes
descriptionYes
welcome_channelsYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the bar is lower, yet the description adds substantial context: required permission scope, the COMMUNITY feature gate, the non-empty-description/at-least-one-channel invariant, and that the channel list is replaced wholesale rather than merged. These are exactly the failure modes an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences, front-loaded with purpose then requirements then limitation then return value. No filler; the LIMITATION label makes the highest-risk constraint scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with permission gates and structural invariants, the description covers prerequisites, validation rules, replacement semantics, and return behavior. An output schema exists, and the description still notes it returns the resulting screen, so nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns extra by explaining update semantics the schema only hints at — the channel list "Replaces the existing list" wholesale when provided, implying other fields may be left untouched. It also maps the four params to their purpose (enable/disable, headline description, per-channel blurb).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource pair ("Configure the server's welcome screen") and enumerates the three configurable aspects (enable state, headline, recommended channels). This clearly distinguishes it from the read-only sibling discord_get_welcome_screen without needing the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the prerequisites explicitly (COMMUNITY feature, Manage Server permission) and the validation constraints that must hold when enabling, which tells the agent when the call will fail. It does not name the alternative read tool (discord_get_welcome_screen) for inspecting current state, but the set-vs-get distinction is unambiguous 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_style_nameA
Read-only

Generate styled variants of one name for a Discord channel, category, forum, or role. Returns one variant per requested style (or every style when none is given). Uses Unicode decorative characters only: this decorates the text, it does not change the font Discord renders, because Discord has no per-server font setting. Empty or punctuation-only input falls back to a readable default name. Use discord_style_preview to plan a whole server at once.

NameRequiredDescriptionDefault
nameYesThe plain name to decorate, e.g. 'announcements'.
emojiNoOptional leading emoji to use for styles that support one.
stylesNoStyles to generate. Omit to generate one variant for every available style.
max_lengthNoMaximum length of each generated name (1–100). Defaults to Discord's 100.

Output Schema

NameRequiredDescription
inputYes
variantsYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint/openWorldHint, it discloses genuinely non-obvious behavior: output is Unicode decorative characters, not an actual font change, and empty or punctuation-only input falls back to a readable default name. That is exactly the context an agent needs to avoid misusing the result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then return shape, then the Unicode caveat and the sibling pointer. Mostly dense, though the 'no per-server font setting' clause slightly over-explains after the point was already made.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A read-only, single-purpose generation tool with a full schema and an output schema, so return values need no explanation. The description covers scope, defaults, edge-case input handling, and the related planning tool, leaving nothing an agent needs missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the parameters are already fully documented, including the styles enum and max_length bounds. The description restates the styles omission semantics rather than adding new meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: generate styled variants of one name, scoped to Discord channels, categories, forums, and roles. It clearly separates itself from the sibling tools that manage/persist styles by emphasizing it only generates variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to discord_style_preview when planning a whole server at once, and clarifies the default behavior when no styles are requested. It does not mention discord_list_name_styles or discord_apply_name_theme, so the alternative space is only partially mapped.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_style_previewA
Read-only

Build a coherent naming plan for a whole server: a shared theme plus per-entity names for categories, text/voice/forum/announcement/rules/support/community channels, and roles. Returns the exact names that would be used, any duplicate names (Discord allows them, but they become indistinguishable in the channel list), and any truncation or fallback that occurred. Read-only: nothing is created or renamed. Use discord_apply_name_theme to actually rename existing entities. These names are decorated text, not a font.

NameRequiredDescriptionDefault
itemsYesEntities to name.
themeYesGlobal style applied to every entity unless overridden.
prefixNoOptional prefix applied to every slug, e.g. a server-wide namespace.
overridesNoPer-entity style override, keyed by the exact `name` string given above.

Output Schema

NameRequiredDescription
itemsYes
themeYes
warningsYes
collisionsYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description reinforces this with 'nothing is created or renamed.' It adds genuinely new behavioral detail: duplicate names are permitted but become indistinguishable, and truncation or fallback may occur. It does not cover rate limits or plan-size constraints, which is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then the return payload, then the safety clarification and the alternative. Four sentences, each carrying distinct information with no repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-object tool with an output schema, the description covers purpose, return shape, safety, and the handoff to the apply tool, which is enough to call it correctly. It stops short of explaining theme selection tradeoffs or the practical length limits implied by the sibling discord_architect_explain_limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so theme, items, prefix and overrides are already documented in structured fields; baseline 3 applies. The description adds little parameter-level detail beyond noting a shared theme with per-entity names, without explaining how prefix or overrides interact in practice.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Build a coherent naming plan for a whole server') and enumerates exactly which entity kinds are covered. It is clearly distinguishable from discord_apply_name_theme and discord_style_name, which the description references by name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Read-only: nothing is created or renamed' and routes the agent to discord_apply_name_theme when actual renaming is intended. It also pre-empts a likely misuse by clarifying 'These names are decorated text, not a font.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_timeout_memberA
Idempotent

Mute a member for a set duration (Discord 'timeout'): they cannot send messages, react, or speak until it expires. Pass duration_minutes = 0 to remove an active timeout early. Max 28 days (40320 minutes). Requires the Moderate Members permission.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the server audit log.
user_idYesDiscord user ID (snowflake) of the member to time out.
guild_idYesDiscord server (guild) ID (snowflake).
duration_minutesYesTimeout length in minutes (0–40320, i.e. up to 28 days). Use 0 to clear an existing timeout.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as non-readOnly, idempotent, and non-destructive. The description adds valuable behavioral detail beyond those hints: exactly what the timeout prevents, that duration_minutes = 0 clears an active timeout early, the 28-day maximum, and the permission requirement. There is no contradiction with 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, all load-bearing: the main effect, the zero-duration edge case, and the permission prerequisite. The most important information is front-loaded, and there is no filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 4-parameter mutation tool with no output schema, this description is complete enough for correct invocation: it explains the timeout effect, early removal, maximum duration, and required permission. The parameter details are fully covered by the schema, and no critical behavioral gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents duration bounds (0–40320), the 'Use 0 to clear' behavior, and the format of guild_id and user_id. The description repeats the 0-clear rule and max duration but does not add meaningful parameter-level semantics beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Mute a member for a set duration (Discord timeout)' and lists the concrete behavioral effects (cannot send messages, react, or speak). This clearly distinguishes it from permanent moderation siblings like kick_member and ban_member, and the title 'Timeout member' reinforces the same idea.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool: temporary muting with a configurable duration, plus the special case of passing 0 to remove an active timeout. It also states the required 'Moderate Members' permission. It does not explicitly compare to alternatives like ban_member or kick_member, but the timeout semantics make the intended use case clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_unban_memberA
Idempotent

Lift a ban so the user may rejoin via a new invite. Requires the Ban Members permission. Reverses discord_ban_member. The reason is recorded in the audit log.

NameRequiredDescriptionDefault
reasonNoOptional reason recorded in the server audit log.
user_idYesDiscord user ID (snowflake) of the banned user to unban.
guild_idYesDiscord server (guild) ID (snowflake).

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with idempotentHint and destructiveHint annotations present, the description adds meaningful behavior: it names the required Ban Members permission, discloses that the reason is recorded in the audit log, and clarifies the practical consequence of the ban being lifted. This goes beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each carrying distinct information: the effect, the permission requirement, and the relationship to the inverse tool. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-required-parameter mutation with strong annotations and no output schema, the description covers the essential invocation context: what it does, what permission is needed, and what side effect to expect. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents guild_id, user_id, and reason fully. The description does not add parameter-level detail beyond what the schema states; the audit-log note about reason duplicates the schema's own description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete action and resource: 'Lift a ban so the user may rejoin via a new invite.' It also explicitly states the inverse relationship to discord_ban_member, which clearly distinguishes it from that sibling and other member-moderation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the direct alternative it reverses (discord_ban_member) and states the required permission, giving an agent clear conditions for when this tool applies. The purpose of undoing a ban is unambiguous, and no competing sibling is relevant for that action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_update_forum_postA
Idempotent

Update a forum post's title, archived/locked state, or applied tags. Only provided fields change; passing applied_tags replaces the post's tags. Set archived:true to close a post without deleting it. Requires the Manage Threads permission.

NameRequiredDescriptionDefault
titleNoNew title/thread name (max 100 characters).
lockedNotrue to lock the post so only moderators can reply.
archivedNotrue to archive (close) the post, false to reopen it.
thread_idYesID (snowflake) of the forum post (thread) to update.
applied_tagsNoTag IDs to apply; replaces the post's current tags. Get valid IDs from discord_get_forum_tags.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly=false, destructive=false, idempotent=true), the description adds the partial-update behavior, the replacement semantics of applied_tags, the non-deleting archive behavior, and a permission requirement. It does not cover error cases or rate limits, but it is solid for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no filler, with the core action front-loaded and the most critical behavioral caveats following in order. Every sentence carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter tool with no output schema, the description covers the action, partial-update semantics, replacement behavior, non-deletion, and permission. It could be more complete by naming the alternative set_forum_tags tool or stating expected error outcomes, but the provided information is sufficient for a competent agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds object-level semantics not captured in the schema: only provided fields change and setting archived true closes without deleting. This partial-update nuance is genuinely useful for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action (update), a specific resource (forum post), and the affected fields (title, archived/locked state, applied tags). It is distinguishable from create/get/delete forum siblings, but it does not explicitly differentiate from the overlapping sibling discord_set_forum_tags.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives useful context: only provided fields change, applied_tags replaces existing tags, archived:true closes without deletion, and Manage Threads permission is required. However, it never states when to prefer this tool over alternatives such as discord_set_forum_tags or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_update_membership_screeningA
Idempotent

Update the server's membership screening form: set the welcome description and the rules new members must agree to. Only provided fields change. Requires the Community feature and the Manage Server permission. Returns the updated form.

NameRequiredDescriptionDefault
guild_idYesDiscord server (guild) ID (snowflake).
descriptionNoWelcome message shown at the top of the screening form.
form_fieldsNoRules/agreement blocks new members must accept. Replaces the existing fields when provided.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds useful behavioral context beyond those annotations: 'Only provided fields change' clarifies partial-update semantics, prerequisites are disclosed, and 'Returns the updated form' tells the agent what to expect despite the absence of an output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the action and target are front-loaded, followed by the partial-update caveat, prerequisites, and return value. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an update tool with three parameters, one required, and no output schema, the description is complete. It covers what updates, what changes, what prerequisites are needed, and what is returned. The only remaining nuance, that form_fields replaces existing rules, is already present in the input schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents each parameter. The description summarizes the meaning of description and form_fields, but does not add syntax, formatting, or replacement semantics beyond what the schema already provides. The baseline of 3 applies here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: 'Update the server's membership screening form' and explicitly identifies the two things it sets: 'welcome description' and 'rules new members must agree to.' This clearly distinguishes it from the sibling discord_get_membership_screening, which reads 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (to modify the membership screening form) and provides important prerequisites: the Community feature and Manage Server permission. However, it does not explicitly mention alternatives such as discord_get_membership_screening for reading the current form, nor does it state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discord_verify_setupA
Read-only

Check that the MCP server itself is correctly installed and connected: whether DISCORD_TOKEN is set (reported as a boolean, never echoed), which gateway intents are requested, which toolsets are exposed and how many tools that yields, whether the Discord client reached READY, and the gateway ping. Read-only, takes no arguments. Run this first when the MCP server appears not to work at all.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
bot_tagYes
ping_msYes
problemsYes
next_stepsYes
tool_countYes
guild_countYes
client_readyYes
token_lengthYes
toolsets_envYes
token_configuredYes
intents_requestedYes
allowed_guilds_countYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, and the description adds genuinely new context: no arguments are required and DISCORD_TOKEN is reported as a boolean and 'never echoed', which tells the agent the call is safe to run and won't leak a secret. The enumeration of checks overlaps somewhat with the output schema, which keeps it from 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and the operational instruction ('run this first') closes it. The middle clause is a long comma-chained list of checks, which is informative but slightly heavier than needed given the output schema also enumerates them.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema covering return values, an empty parameter schema, and read-only annotations, the description supplies everything else an agent needs: what is verified, that nothing is mutated, that no secret is exposed, and when to invoke it. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4. The description confirms 'takes no arguments', which is consistent with the empty schema and additionalProperties: false, leaving nothing ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and scope ('check that the MCP server itself is correctly installed and connected') and enumerates the exact signals returned: token presence, gateway intents, toolsets/tool counts, READY state, and ping. The 'server itself' framing separates it from Discord-side diagnostics in the sibling list, so an agent can pick it 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger: 'Run this first when the MCP server appears not to work at all.' That establishes precedence over deeper diagnostic siblings, but it doesn't name those alternatives (e.g. discord_diagnose_configuration, discord_check_tool_permissions) or state the when-not case for Discord-side config errors.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 177 tool updatesv3.0.0
    • First observeddiscord_add_reaction
    • First observeddiscord_add_role
    • First observeddiscord_apply_automod_baseline
    • First observeddiscord_apply_name_theme
    • First observeddiscord_architect_apply
    • First observeddiscord_architect_compare
    • First observeddiscord_architect_create_template
    • First observeddiscord_architect_delete_structure
    • First observeddiscord_architect_delete_template
    • First observeddiscord_architect_explain_limits
    • First observeddiscord_architect_list_templates
    • First observeddiscord_architect_plan
    • First observeddiscord_architect_read_structure
    • First observeddiscord_architect_repair
    • First observeddiscord_audit_permissions
    • First observeddiscord_ban_member
    • First observeddiscord_bulk_ban
    • First observeddiscord_bulk_delete_messages
    • First observeddiscord_cancel_scheduled_task
    • First observeddiscord_check_tool_permissions
    • First observeddiscord_clone_channel
    • First observeddiscord_compare_structure
    • First observeddiscord_copy_permissions
    • First observeddiscord_create_automod_rule
    • First observeddiscord_create_channel
    • First observeddiscord_create_emoji
    • First observeddiscord_create_event_invite
    • First observeddiscord_create_forum_channel
    • First observeddiscord_create_forum_post
    • First observeddiscord_create_invite
    • First observeddiscord_create_reaction_role_menu
    • First observeddiscord_create_role
    • First observeddiscord_create_scheduled_event
    • First observeddiscord_create_sticker
    • First observeddiscord_create_thread
    • First observeddiscord_create_webhook
    • First observeddiscord_crosspost_message
    • First observeddiscord_delete_automod_rule
    • First observeddiscord_delete_channel
    • First observeddiscord_delete_dm
    • First observeddiscord_delete_emoji
    • First observeddiscord_delete_forum_post
    • First observeddiscord_delete_invite
    • First observeddiscord_delete_message
    • First observeddiscord_delete_reaction_role_menu
    • First observeddiscord_delete_role
    • First observeddiscord_delete_scheduled_event
    • First observeddiscord_delete_sticker
    • First observeddiscord_delete_webhook
    • First observeddiscord_delete_webhook_message
    • First observeddiscord_diagnose_configuration
    • First observeddiscord_edit_automod_rule
    • First observeddiscord_edit_channel
    • First observeddiscord_edit_dm
    • First observeddiscord_edit_dm_embed
    • First observeddiscord_edit_embed
    • First observeddiscord_edit_emoji
    • First observeddiscord_edit_message
    • First observeddiscord_edit_role
    • First observeddiscord_edit_scheduled_event
    • First observeddiscord_edit_sticker
    • First observeddiscord_edit_webhook
    • First observeddiscord_edit_webhook_message
    • First observeddiscord_enable_community
    • First observeddiscord_explain_permissions
    • First observeddiscord_export_structure
    • First observeddiscord_fetch_pinned_messages
    • First observeddiscord_fetch_webhook_message
    • First observeddiscord_find_channel_by_name
    • First observeddiscord_find_permission_problems
    • First observeddiscord_follow_announcement_channel
    • First observeddiscord_forward_message
    • First observeddiscord_get_audit_log
    • First observeddiscord_get_automod_rule
    • First observeddiscord_get_bot_identity
    • First observeddiscord_get_bot_permissions
    • First observeddiscord_get_bot_profile_limits
    • First observeddiscord_get_channel_permissions
    • First observeddiscord_get_event_subscribers
    • First observeddiscord_get_forum_channels
    • First observeddiscord_get_forum_post
    • First observeddiscord_get_forum_tags
    • First observeddiscord_get_guild_features
    • First observeddiscord_get_guild_info
    • First observeddiscord_get_guild_preview
    • First observeddiscord_get_guild_settings
    • First observeddiscord_get_guild_vanity_url
    • First observeddiscord_get_guild_widget
    • First observeddiscord_get_invite
    • First observeddiscord_get_member_info
    • First observeddiscord_get_membership_screening
    • First observeddiscord_get_message_attachments
    • First observeddiscord_get_onboarding
    • First observeddiscord_get_reactions
    • First observeddiscord_get_role_members
    • First observeddiscord_get_scheduled_event
    • First observeddiscord_get_server_stats
    • First observeddiscord_get_welcome_screen
    • First observeddiscord_kick_member
    • First observeddiscord_list_automod_rules
    • First observeddiscord_list_bans
    • First observeddiscord_list_channel_invites
    • First observeddiscord_list_channels
    • First observeddiscord_list_emojis
    • First observeddiscord_list_forum_threads
    • First observeddiscord_list_guilds
    • First observeddiscord_list_invites
    • First observeddiscord_list_members
    • First observeddiscord_list_name_styles
    • First observeddiscord_list_reaction_role_menus
    • First observeddiscord_list_roles
    • First observeddiscord_list_scheduled_events
    • First observeddiscord_list_scheduled_tasks
    • First observeddiscord_list_stickers
    • First observeddiscord_list_webhooks
    • First observeddiscord_lock_channel_permissions
    • First observeddiscord_move_channel
    • First observeddiscord_pin_message
    • First observeddiscord_prune_members
    • First observeddiscord_publish_announcement
    • First observeddiscord_read_audit_trail
    • First observeddiscord_read_dms
    • First observeddiscord_read_messages
    • First observeddiscord_remove_guild_banner
    • First observeddiscord_remove_guild_icon
    • First observeddiscord_remove_reactions
    • First observeddiscord_remove_role
    • First observeddiscord_reply_dm
    • First observeddiscord_reply_message
    • First observeddiscord_reply_to_forum
    • First observeddiscord_reset_channel_permissions
    • First observeddiscord_restore_structure
    • First observeddiscord_schedule_message
    • First observeddiscord_search_guild_messages
    • First observeddiscord_search_members
    • First observeddiscord_search_messages
    • First observeddiscord_send_dm
    • First observeddiscord_send_dm_embed
    • First observeddiscord_send_embed
    • First observeddiscord_send_message
    • First observeddiscord_send_multiple_embeds
    • First observeddiscord_send_poll
    • First observeddiscord_send_webhook_message
    • First observeddiscord_set_application_description
    • First observeddiscord_set_application_icon
    • First observeddiscord_set_bot_avatar
    • First observeddiscord_set_bot_guild_avatar
    • First observeddiscord_set_bot_nickname
    • First observeddiscord_set_bot_username
    • First observeddiscord_set_channel_position
    • First observeddiscord_set_forum_tags
    • First observeddiscord_set_guild_banner
    • First observeddiscord_set_guild_channels
    • First observeddiscord_set_guild_description
    • First observeddiscord_set_guild_icon
    • First observeddiscord_set_guild_locale
    • First observeddiscord_set_guild_name
    • First observeddiscord_set_guild_safety
    • First observeddiscord_set_guild_splash
    • First observeddiscord_set_guild_widget
    • First observeddiscord_set_member_permission
    • First observeddiscord_set_membership_gate
    • First observeddiscord_set_nickname
    • First observeddiscord_set_onboarding
    • First observeddiscord_set_premium_progress_bar
    • First observeddiscord_set_role_icon
    • First observeddiscord_set_role_permission
    • First observeddiscord_set_role_position
    • First observeddiscord_set_system_channel_notices
    • First observeddiscord_set_welcome_screen
    • First observeddiscord_style_name
    • First observeddiscord_style_preview
    • First observeddiscord_timeout_member
    • First observeddiscord_unban_member
    • First observeddiscord_update_forum_post
    • First observeddiscord_update_membership_screening
    • First observeddiscord_verify_setup

TDQS

A3.7/5.0

Scored across 177 tools

Disambiguation3/5

Most tools carry explicit disambiguation hints ('use X instead of Y'), which rescues an otherwise extremely crowded surface. However there are many genuinely near-neighbour clusters — get_guild_info / get_server_stats / get_guild_settings / get_guild_preview / get_guild_features, and read_messages / search_messages / search_guild_messages / fetch_pinned_messages, and send_message / send_embed / send_multiple_embeds / reply_message / send_webhook_message / publish_announcement — that an agent must read carefully to pick correctly. Boundaries are documented but not self-evident from names alone.

Naming Consistency4/5

Uniform discord_ prefix plus snake_case resource_action throughout, including a coherent discord_architect_* sub-namespace. The only wobble is verb drift for reads (list_ vs get_ vs fetch_ vs read_ vs explain_ vs verify_) and a few nouns that encode sub-resources (send_dm vs send_message, edit_dm_embed vs edit_embed), but the pattern is highly readable and predictable.

Tool Count1/5

177 tools for one server is an extreme mismatch: no agent can reliably select from this surface, and much of it is long-tail (stickers, per-server bot avatars, application icon, reaction-role menus, styled Unicode names). The domain is genuinely large, but this should be split into toolsets (channels, members, permissions, guild settings, automod, build/architect) rather than a single flat list.

Completeness4/5

Coverage is unusually thorough — CRUD for channels, messages, threads/forums, members, roles, invites, webhooks, scheduled events, AutoMod, emoji/sticker, guild settings, onboarding, plus diagnostics, structure backup/restore and a declarative build pipeline. Remaining gaps are interactions/message components, slash-command registration, and voice/stage moderation, plus explicitly documented platform limits (no guild creation, no message-history export).

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Comprehensive Discord server management through MCP, enabling channel, role, permission, message, moderation, and automation tasks via natural language.
    4
    -
  • A
    license
    A
    quality
    C
    maintenance
    An MCP server that lets AI assistants provision Discord servers (guilds, categories, channels, roles, permissions) from declarative blueprints via the Discord REST API, with idempotent diff-based planning and no deletions.
    15
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server that exposes Discord API as tools, enabling users to manage servers, channels, messages, and roles through natural language.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables autonomous Discord server administration via natural language, allowing users to delegate tasks like channel/role creation, permission checks, and automations to an AI agent with safety gates and audit trails.
    MIT