Server has 8 well-named tools with complete input schemas and descriptions. All tools follow verb_noun naming (slack_list_*, slack_post_*, slack_get_*). Descriptions are present and actionable (avg ~80 chars). However, output schemas are completely undocumented, no tool declares what fields it returns, forcing LLMs to guess. Parameter descriptions are adequate but lack constraints (enums, ranges, formats). No error handling guidance, no recovery paths, no pagination documentation despite two tools supporting cursors. Missing tool annotations (readOnlyHint/destructiveHint) despite clear risk classification. No documentation of which tools are idempotent or safe to retry.
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
No output schemas documented. Tools return data but LLMs cannot see what fields to expect, forcing guesswork and downstream lookup calls.
Missing tool annotations. Write tools (post_message, reply_to_thread, add_reaction) lack destructiveHint=true; read tools lack readOnlyHint=true. Agents cannot distinguish safe from risky operations.
No error handling guidance. Tools provide no recovery hints (e.g., 'Channel not found. Try slack_list_channels() to find valid IDs'). Agents cannot self-correct on failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Post a new message to a Slack channel
Reply to a specific message thread in Slack
Pagination parameters (cursor, limit) lack constraints. No documentation of max page size, cursor format, or when pagination is exhausted. slack_list_channels and slack_get_users accept cursors but provide no guidance on usage.
Parameter descriptions lack format/constraint details. 'thread_ts' requires format '1234567890.123456' but description is verbose and unclear. 'reaction' accepts emoji names but no enum or pattern constraint. LLMs will guess invalid values.