CLI and MCP server for Slack — channels, messages, DMs, search, and users
23 tools with consistent verb-noun naming (list_, get_, create_, post_, etc.). All tools have descriptions (avg ~80 chars, within baseline 34-392). Input schemas present with type definitions and parameter descriptions. However, output schemas are not documented, LLMs cannot predict response structure for chaining. Error handling is minimal; no recovery guidance or actionable error messages visible. Missing tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications. Parameter descriptions are adequate but lack format constraints (e.g., no enum for channel types, no regex for timestamps). No pagination metadata (total_count, next_cursor) visible in list tools.
Add an emoji reaction to a message.
Archive a Slack channel.
Create a new Slack channel.
Delete a message from a channel.
Fetch message history from a Slack channel.
Get detailed information about a specific Slack channel.
Fetch message history from a DM or group DM conversation.
Output schemas not documented. LLMs cannot predict response structure, breaking tool chaining. E.g., list_channels returns what fields? Does it include channel_id, name, is_private? Agents cannot plan downstream calls without this.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are classified as READ_ONLY, WRITE, REVERSIBLE, DESTRUCTIVE in metadata, but these are not exposed to the LLM via MCP tool annotations. Agents cannot reason about safety.
Parameter constraints missing. 'types' param in list_channels accepts 'public_channel,private_channel' but no enum constraint. 'sort' in search_messages has no enum. LLMs hallucinate invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Get all reactions on a specific message.
Get all replies in a message thread.
Join a Slack channel.
Leave a Slack channel.
List all accessible Slack channels in the workspace.
List direct message and group DM conversations.
Open a direct message or group DM conversation.
Post a message to a Slack channel.
Remove an emoji reaction from a message.
Reply to a message thread in Slack.
Search both messages and files across the Slack workspace.
Search files across the Slack workspace.
Search messages across the Slack workspace.
Send a direct message to a user.
Set the topic for a Slack channel.
Update an existing message.
No pagination metadata in list responses. list_channels, list_conversations, search_* tools accept 'limit' but no 'total_count' or 'next_cursor' documented. Large result sets will blow context window.
Error handling not visible. No recovery guidance in tool descriptions. E.g., 'channel not found' should suggest 'Try list_channels() to find the correct ID.' Agents have no fallback strategy.