Three tools with basic schemas and descriptions, but significant gaps in parameter documentation and output structure. slack_list_channels has no input schema (empty object). slack_read_channel and slack_post_message have typed parameters with descriptions, but descriptions lack actionable constraints (e.g., no mention of channel ID format, no guidance on when to use name vs ID). No output schemas documented, LLMs cannot predict response structure. No error handling guidance. Tool names follow verb_noun pattern (good), but descriptions are generic and under-optimize for LLM selection. No tool annotations (readOnlyHint, destructiveHint) despite clear risk profiles.
List all Slack channels accessible by the bot. Returns a formatted list of channel names with their IDs and topics.
Send a message to a Slack channel. Args: channel: Channel name (without #) or channel ID. text: The message text to send. Supports Slack markdown.
Read the last N messages from a Slack channel. Args: channel: Channel name (without #) or channel ID. limit: Number of messages to retrieve (default: 20, max: 100).
slack_list_channels has empty input schema ({}). Tool is read-only but lacks readOnlyHint annotation.
No output schemas documented for any tool. LLMs cannot predict response structure (e.g., does slack_list_channels return a string or structured object? What fields are in each channel record?). Violates pattern:response-shaper.
Parameter descriptions lack actionable constraints. 'channel: Channel name (without #) or channel ID' does not specify format, length, or resolution logic. 'limit: Number of messages (default: 20, max: 100)' omits minimum. LLMs cannot validate inputs without explicit bounds.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
slack_post_message is destructive (WRITE risk) but has no error handling guidance, confirmation step, or dry-run option. Agents cannot safely retry or recover from partial failures. Violates pattern:confirmation-request.
Tool annotations missing. slack_list_channels and slack_read_channel should have readOnlyHint=true; slack_post_message should have destructiveHint=true. These hints guide agent planning and safety checks.