A Model Context Protocol (MCP) server for Slack Lists integration that provides AI assistants with tools to interact with Slack Lists including creating, reading, updating, and managing list items
This server has 9 tools with generally well-intentioned descriptions and reasonable parameter structure. However, there are critical gaps: (1) Multiple tools use bare 'string' parameters for complex inputs (e.g., additional_fields, items_data, search_column_ids) that should be properly typed arrays or objects in the schema. These are documented as JSON strings in descriptions but not enforced by schema validation. (2) Parameters lack explicit constraints (enums, ranges, patterns) in the schema itself, they are described textually but LLMs cannot machine-parse them. (3) Several tools lack documented output schemas, violating the requirement that tools document what they return. (4) Error handling is minimal, no guidance on what to do if a list_id is invalid, if rate limits are hit, or if a filter returns no results. (5) The server lacks tool annotations (readOnlyHint, destructiveHint, idempotentHint) to signal tool safety and retry semantics to agents. Overall, the definitions are competent but fall short of production-grade quality by baseline standards (A+/A tier requires near-complete schema clarity and error recovery guidance).
Create a new item in a Slack List. This tool creates a single item in the specified Slack List. The item must have at least a title field, and can include additional fields as needed. All field values are validated against the list's schema.
Create multiple items in a Slack List with rate limiting. This tool is useful for bulk operations and automatically handles rate limiting between requests to avoid hitting Slack API limits. Each item can have its own set of fields.
Delete an item from a Slack List. This tool removes an item from the list. This action is permanent and cannot be undone.
Export items from a Slack List to JSON or CSV format. This tool exports list items in a standard format suitable for analysis, reporting, or integration with other systems. Supports filtering to export only specific items.
Filter items in a Slack List by field values. This tool allows advanced filtering of list items by any field column using various comparison operators. Useful for finding specific items, generating reports, or exporting subsets of data.
JSON string parameters lack proper schema typing. Tools accept 'additional_fields', 'items_data', 'search_column_ids', and 'fields_to_update' as strings containing JSON, but the schema declares them as 'type: string' with no validation. LLMs cannot parse constraints or validate structure before calling. These should be declared as 'type: array' or 'type: object' with proper subschemas.
No documented output schemas for any tool. LLMs cannot plan downstream calls or extract required fields (list_id, item_id, etc.) for tool chaining. Every tool needs to declare: what fields are in the response, which are object references usable by other tools, and what happens on success vs. error.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 35 | - | v1 |
Retrieve items from a Slack List with optional metadata. This tool fetches all items from a specified Slack List, with support for pagination through the limit parameter. Returns comprehensive item data including all field values and metadata.
Get metadata and schema information for a Slack List. This tool retrieves configuration details about a Slack List including available fields/columns, their types, and other metadata needed to properly format data for create/update operations.
Search for items in a Slack List by text content. This tool performs a text search across item titles and specified fields, returning matching items with relevance information. Useful for finding specific items when you don't know the exact field values.
Update an existing item in a Slack List. This tool updates specific fields of an item. You can update one or more fields while leaving others unchanged. All field values are validated against the list's schema.
Enum parameters are documented in text but not declared in schema. filter_list_items and export_list_items describe valid values (e.g., filter_operator: 'equals', 'contains', 'not_equals', 'not_contains', 'exists', 'not_exists') in descriptions only. Without schema enums, LLMs cannot select valid options reliably and may hallucinate values like 'match' or 'regex'.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot determine which tools are safe to retry, which modify state, and which require confirmation. delete_list_item especially needs destructiveHint=true to signal to agents that this operation is irreversible.
Minimal error handling guidance. No tool describes what happens if list_id is invalid, if a search returns no results, if rate limits are hit during bulk operations, or if an item_id does not exist. Error messages should be actionable: 'List not found. Try list_available_lists() or check the list_id format (F1234ABCD).'
Undocumented parameter dependencies. filter_list_items marks filter_value as required but notes in description that it is 'not used for exists/not_exists operators'. This is an implicit conditional: when filter_operator is 'exists' or 'not_exists', filter_value should be omitted or ignored. Schema should clarify this with oneOf or conditional validation.
create_multiple_list_items lacks per-item success/failure reporting. Description says 'rate limiting between requests' but does not clarify what happens if item 3 of 50 fails, does the entire operation abort, or return a partial success array with status per item? Agents need clear guidance on idempotency and retry strategy.
No confirmation/dry-run pattern for destructive operations. delete_list_item and update_list_item modify state irreversibly. Best practice is to offer a dry-run mode or require explicit confirmation before executing. Agents make mistakes, a safety gate prevents accidental data loss.