MCP server for interacting with Slack workspaces, enabling message posting, channel management, user information retrieval, and thread interactions
Slack MCP has well-structured tool definitions with complete input schemas and clear descriptions. All 7 tools are explicitly registered with proper JSON Schema. Naming follows verb_noun convention (list, post, get, add). However, output schemas are entirely undocumented, LLMs cannot predict response structure or plan downstream calls. Parameter descriptions are adequate but lack constraint details (e.g., timestamp format is explained in prose but not formalized). Error handling is absent, no guidance on retryability, user-fixable errors, or recovery paths. Missing tool annotations (readOnlyHint, destructiveHint) despite clear risk classifications. No batch operations despite agents likely calling post_message/add_reaction in loops.
Add a reaction emoji to a message
Get recent messages from a channel
Get all replies in a message thread
Get a list of all users in the workspace with their basic profile information
List public or pre-defined channels in the workspace with pagination
Post a new message to a Slack channel
Output schemas completely undocumented. LLMs cannot predict response structure (e.g., what fields does slack_post_message return? Is it {ok, ts, channel} or {ok, message}?). Forces agents to guess or fail on downstream operations.
No error handling guidance. Slack API errors (e.g., 'channel_not_found', 'not_in_channel', 'rate_limited') are returned raw without recovery hints. LLM cannot determine if error is retryable, user-fixable, or fatal.
Missing tool annotations. slack_post_message, slack_reply_to_thread, and slack_add_reaction are destructive (WRITE risk) but lack destructiveHint annotation. slack_list_channels, slack_get_channel_history, slack_get_thread_replies, slack_get_users are read-only but lack readOnlyHint. Agents cannot distinguish safe from risky operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Reply to a specific message thread in Slack
Timestamp format documented in prose ('1234567890.123456') but not formalized as JSON Schema pattern or format constraint. LLMs may pass malformed timestamps; validation happens server-side with unclear error messages.
No batch operations. Agents calling post_message or add_reaction in loops generate N sequential calls instead of one batch. Wastes tokens, latency, and invites mid-chain failures.