MCP server for interacting with Slack
Server has 9 well-named tools with complete input schemas and descriptions. Naming follows verb_noun convention (list_, get_, post_, search_, add_). All tools have descriptions (avg 65 chars, within baseline 34-392). Input schemas are properly typed with required fields marked. However, output schemas are completely undocumented, LLMs cannot plan downstream calls or extract needed fields. Parameter descriptions lack constraints (e.g., no enum for reaction names, no format for timestamps). Error handling is absent from visible code. No pagination guidance in descriptions despite tools accepting limit/cursor. Missing security considerations for token injection via message text.
Add a reaction emoji to a message
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 channels in the workspace with pagination
Output schemas completely undocumented. LLMs cannot determine what fields are returned, preventing downstream tool chaining and forcing wasteful discovery calls.
Parameter constraints missing. 'reaction' param has no enum of valid emoji names. 'thread_ts' format description is verbose but lacks regex pattern. 'limit' params lack min/max bounds (e.g., 1-200).
No error handling guidance in code. LLMs receive raw API errors with no recovery hints. E.g., 'Channel not found' should suggest 'Try slack_list_channels() to find the correct channel_id.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Post a new message to a Slack channel
Reply to a specific message thread in Slack
Search for messages across channels
Pagination not explained in tool descriptions. Tools accept 'cursor' and 'limit' but descriptions don't explain when to use cursor for next page or how to detect end of results.
Security: 'text' parameter in slack_post_message and slack_reply_to_thread accepts free-form strings with no sanitization guidance. LLMs could inject Slack formatting or markdown that causes unintended side effects.