Server has solid naming conventions (all tools start with action verbs: list_, search_, read_, get_) and comprehensive parameter schemas with types and descriptions. All 10 tools have descriptions (avg 85 chars, within baseline 34-392). However, output schemas are not documented, LLMs cannot predict response structure for planning. Error handling is minimal (mask_error_details=True suppresses details). No per-tool error guidance. Pagination is explicit but cursor handling lacks documentation of what cursors contain or how to interpret them. Security is strong (read-only, no secrets in params, tool annotations present). Composition is clean, each tool has one responsibility.
Read one user's Slack profile by user ID.
Verify every configured token against its configured Slack team ID.
List one bounded page of channels visible in one workspace.
List one bounded page of users visible in one workspace.
List configured workspace aliases, labels, and team IDs.
Read one bounded page of messages from a Slack channel ID.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nested objects) for planning downstream calls or extracting data. E.g., list_channels returns dict but structure unknown.
Error handling suppressed (mask_error_details=True). LLMs receive no actionable recovery guidance. E.g., invalid workspace alias returns generic error instead of 'Workspace not found. Available: [list]'.
Pagination cursor semantics undocumented. Parameters accept cursor but LLMs don't know what cursor contains, how to obtain initial cursor, or when pagination ends. Violates pattern:paginated-result.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Read one bounded page of a thread by channel ID and thread timestamp.
Search names within one bounded channel page and return its cursor.
Search one bounded Slack message-search page.
Search names within one bounded user page and return its cursor.
Parameter descriptions lack format/constraint details. E.g., 'workspace' param described as 'workspace alias' but no guidance on valid format, length, or how to discover valid aliases without calling list_workspaces first.
No batch operations. Tools like add_labels or tag_users accept single items; agents calling in loops waste tokens and latency. Consider batch variants (e.g., read_channels accepting array of channel_ids).