This server has well-defined tools with proper JSON schemas and clear descriptions. All 11 tools are explicitly registered with input schemas in Tools.ts. Naming follows verb_noun patterns consistently (slack_list_*, slack_get_*, slack_post_*, slack_reply_*, slack_add_*). However, there are notable gaps: output schemas are not documented, error handling is absent from visible code, and some parameter descriptions lack detail about constraints and format expectations. The descriptions are generally adequate (averaging ~80-120 chars) but several lack guidance on when/why to use the tool or prerequisites. No tool annotations (readOnlyHint/destructiveHint) are visible. Parameter designs are reasonable but could be improved: some tools accept ambiguous dual parameters (e.g., slack_post_message accepts channel_name OR channel_id without documenting mutual exclusivity clearly), and formats like thread_ts lack strict validation guidance despite complex formatting rules. Overall, the server is functionally sound but falls short of production-grade polish.
Add a reaction emoji to a message
Get recent messages from a channel
Get information about the currently authenticated Slack user (who-am-i)
Get recent direct message history with a user
Get all replies in a message thread
Find a user with an email address
Output schemas not documented. Tools return Slack API responses but no schema documentation visible for return types, fields, or pagination structure. LLMs cannot plan downstream calls without knowing what fields are available.
Ambiguous dual parameters in slack_post_message and slack_get_dm_history. Tools accept channel_name OR channel_id without documenting mutual exclusivity. Description should state: 'Provide either channel_name or channel_id, not both. If both are provided, channel_id takes precedence.'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 73 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 48 | - | v1 |
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
Post a new message to a Slack channel
Reply to a specific message thread in Slack
Thread timestamp format documentation is unclear. The description says 'format 1234567890.123456' but LLMs frequently misformat this. Should specify: 'Unix timestamp with microseconds (epoch seconds, dot, then 6-digit microsecond component). If you have a timestamp without a period, add a period such that exactly 6 digits follow it. Example: 1609459200 → 1609459200.000000'
No error handling guidance visible. Tools declare no mechanism to communicate retryable vs. fatal errors, missing resources, or permission denials to the LLM. Production agents need recovery paths.
No tool annotations for risk levels. Write tools (slack_post_message, slack_reply_to_thread, slack_add_reaction) have Risk marked in metadata but no destructiveHint annotation in schema. Read-only tools lack readOnlyHint.
Missing parameter constraints. Several numeric parameters (limit in slack_list_channels: 'max 200', slack_get_users: 'max 200', slack_get_dm_history) lack minimum/maximum bounds in schema. JSON Schema should include minValue/maxValue, not just description text.
slack_post_message requires only 'text' parameter but accepts channel_name/channel_id optionally. If neither is provided, behavior is undefined, will it post to DM, fail, or default somewhere? Description should clarify.
Descriptions lack dependency hints. Tools that return paginated results (slack_list_channels, slack_get_users, slack_get_dm_history) accept cursor parameters but don't explain when to use them or how to detect more results.
Pagination guidance missing. Tools with limit and cursor parameters should document whether limit=200 means 'return up to 200' or 'exactly 200 or error'. Unclear if cursor=null means end-of-results or start.