MCP server exposing unified-channel messaging as AI agent tools. Enables AI agents to send/receive messages across 18+ channels (Telegram, Discord, Slack, WhatsApp, Matrix, MS Teams, LINE, Feishu, Mattermost, IRC, Google Chat, Synology Chat, Zalo, Nostr, Twitch, BlueBubbles, Nextcloud Talk, iMessage).
The unified-channel MCP server presents a foundational messaging abstraction across 18 channels with 6 tools. However, definition quality is hindered by missing parameter descriptions, incomplete output schemas, and vague tool names that don't clearly distinguish similar operations. While all tools have some description text and basic input schemas are present, parameter-level documentation is sparse, and output structures are not formally documented. The tool naming follows the verb pattern (send_, broadcast_, get_, list_, load_) correctly, but composite operations like broadcast_message combine multiple responsibilities into one tool. Descriptions are present but generic, they state WHAT the tool does but lack clarity on WHEN to use it versus alternatives, and several parameters lack description text entirely. No tool descriptions explain error conditions, prerequisites, or idempotent/destructive behavior, which is critical for agent safety.
Send the same message to multiple channels at once
Check the connection status of all configured channels
Get recent messages received across all connected channels
List all 18 supported channel types and which ones are currently connected
Load channel configuration from a YAML file
Send a message to a user/chat on any connected channel (Telegram, Discord, Slack, WhatsApp, Matrix, etc.)
Output schemas not documented. Tools get_channel_status and list_channels have NO visible output schema documentation in the source code. LLMs cannot plan downstream operations without knowing what fields to expect.
Parameters lack descriptions. The 'limit' parameter in get_recent_messages and 'channel' parameter lack inline descriptions explaining valid values, formats, or constraints. Per the rubric (pattern:tool-description), every parameter needs a non-empty description; ambiguous params force LLMs to guess.
Tool descriptions are generic and lack actionable context. 'Send the same message to multiple channels at once' (broadcast_message) does not explain when to use broadcast_message vs calling send_message multiple times. Descriptions should include WHEN and WHY, not just WHAT. Under the 194-char production baseline, these descriptions are under 100 chars and lack prerequisite/dependency hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 50 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 23 | - | v1 |
No error handling guidance in tool descriptions. Tools like send_message and broadcast_message make irreversible changes (WRITE risk) but do not explain what happens on failure, whether retries are safe, or how to recover. Per the rubric (pattern:recovery-guide), error responses must guide the LLM on next steps.
broadcast_message combines multiple responsibilities (multiple sends in one tool) instead of composing single send_message calls. Per the rubric (pattern:tool), each tool should do exactly one thing. A broadcast should be a higher-level agent loop, not a tool.
Parameter 'channel' overloaded across tools. send_message accepts 'channel' (18 enum values like 'telegram', 'discord'). No enum constraint is formally declared in the schema shown; LLMs will hallucinate unsupported channels. Per the rubric (pattern:constrained-input), enum parameters must be declared as enums.
No pagination guidance for get_recent_messages. The tool accepts a 'limit' parameter but no documentation of maximum, default, or total count behavior. Per the rubric (pattern:paginated-result), tools returning lists should accept limit and return total count or next_cursor.
Tool annotation hints missing. No tool declares readOnlyHint, destructiveHint, or idempotentHint per current MCP spec. send_message and broadcast_message are destructive (irreversible writes) and should be annotated. Per the spec (2026-07-28), tool annotations are a current best practice for agent safety.