A lightweight MCP server for Discord server moderation
30 tools with consistent naming (verb_noun pattern) and complete input schemas. Descriptions are present but generic (avg ~80 chars, below 194-char baseline). All parameters have type definitions and descriptions. Critical gaps: no output schemas documented, no error handling guidance, no pagination details for list tools, and no tool annotations (readOnlyHint/destructiveHint). Destructive tools (ban, delete, purge) lack confirmation/dry-run patterns. Parameter descriptions lack format constraints (e.g., 'Hex color string' but no validation rules). Missing idempotency guarantees for retry-safe operations.
Assigns a role to a member in a Discord server.
Ban a member from a Discord server. Optionally deletes their recent messages.
Deletes a specific set of messages by their IDs.
Creates a new category in a Discord server.
Creates a new text or voice channel in a Discord server.
Creates a new role in a Discord server.
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., what does list_members return? Does it include role IDs for chaining to assign_role?).
Destructive tools (ban_member, delete_role, delete_channel, purge_messages, bulk_delete_messages) lack confirmation/dry-run patterns. Agents can irreversibly delete data without safeguards.
List tools (list_bans, list_roles, list_members) lack explicit pagination guidance. Descriptions mention limit/after but do not explain cursor semantics, total count return, or when to stop iterating.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | <=2025-11-25 | v2 |
Deletes a Discord channel.
Deletes a role from a Discord server.
Edits a Discord channel's name, topic, parent category, position, or slowmode.
Edits an existing role in a Discord server.
Retrieves audit log entries from a Discord server with optional filtering by action type, user, or time.
Gets detailed information about a specific member in a Discord server.
Gets detailed information about a Discord server including channels, roles, and statistics.
Kick a member from a Discord server. The member can rejoin with an invite.
Lists all banned users in a Discord server with their reasons.
Lists members in a Discord server with their roles.
Lists all roles in a Discord server with their properties.
Lists all Discord servers the bot is a member of.
Authenticate the bot with Discord using a token
Pins a message in a Discord channel.
Deletes multiple messages from a channel based on filters (author, content, attachments, time range).
Removes permission overrides for a role or user on a channel or category.
Removes a role from a member in a Discord server.
Sends a direct message to a Discord user.
Sets or clears a member's nickname in a server.
Sets permission overrides for a role or user on a channel or category.
Timeout (server mute) a member for a specified duration. Use durationSeconds=0 to clear a timeout.
Unban a user from a Discord server.
Unpins a message from a Discord channel.
Warn a member by sending them a DM with the warning reason. Optionally logs to a mod channel.
Parameter descriptions lack format constraints. E.g., 'Hex color string (e.g. #FF0000)' should specify regex pattern or enum. 'Duration in seconds (0 to clear, max 2419200)' should state min/max as JSON Schema constraints, not prose.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) in schema. Clients cannot distinguish safe reads from destructive writes or know which tools are retry-safe.