This Slack MCP server has solid naming conventions and complete JSON schemas for all 9 tools, but suffers from insufficient description depth and missing output schema documentation. All tools start with action verbs (add_, edit_, get_, post_, reply_) following the verb_noun pattern. Parameter schemas are well-formed with type definitions and descriptions. However, tool descriptions average ~60 characters, below the 194-char baseline for A+ tools, lacking context about when to use each tool versus alternatives. Output schemas are completely undocumented, LLMs cannot plan downstream calls or extract fields with confidence. Error handling is not visible in the provided code; the client.ts shows rate limiting and sanitization but no recovery guidance in responses. Input validation occurs (reaction sanitization, limit capping) but error messages are not documented. The server correctly injects secrets via environment variables (SLACK_BOT_TOKEN) rather than tool parameters, following security best practices.
Add a reaction emoji to a message
Edit an existing message in a Slack channel
Get recent messages from a channel
Get all replies in a message thread
Get detailed profile information for a specific user
Get a list of all users in the workspace with their basic profile information
List public or pre-defined channels in the workspace
Output schemas completely undocumented. No documentation of response structure for any tool. LLMs cannot determine what fields will be returned or plan downstream calls that depend on channel_id, user_id, or thread_ts from previous responses.
Tool descriptions too brief (avg 60 chars vs baseline 194). Descriptions lack context about when to use each tool, prerequisites, and what the tool returns. E.g., 'Add a reaction emoji to a message' does not explain Slack emoji naming constraints or what constitutes success.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 65 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 37 | - | v1 |
Post a new message to a Slack channel
Reply to a specific message thread in Slack
No error recovery guidance. Code shows rate limiting and sanitization but tool definitions do not document what errors can occur, how to retry, or what to do next. E.g., 'Invalid emoji name' errors are not documented as recoverable via sanitization.
Pagination helpers incomplete. get_users and list_channels accept limit and cursor but do not document total count or next_cursor in response. LLMs cannot determine if more results exist or plan efficient pagination.
Tool names could better distinguish similar operations. 'get_users' and 'list_channels' use inconsistent verb pairing (get vs list). For consistency and clarity, consider 'list_users' + 'list_channels' or 'get_user' + 'get_channel'.
Parameter descriptions lack format/constraint details. E.g., 'thread_ts' parameter description states format '1234567890.123456' as a comment but this is not enforced or validated. Emoji reaction parameter allows arbitrary strings that are later sanitized, but LLMs are not told this constraint upfront.