MCP server for Time Messenger (Mattermost-based corporate messenger by T-Bank)
Server has 23 well-named tools with consistent verb_noun patterns (login_with_mfa, list_channels, send_message, etc.). All tools have descriptions (10 - 200 chars, within baseline 194 avg). Input schemas are present and properly typed with JSON Schema. However, parameter descriptions are sparse or missing for many tools, e.g., 'page' and 'per_page' in get_channel_messages lack format/range guidance. Output schemas are not documented anywhere in the code, forcing LLMs to infer response structure. Error handling is minimal: most tools throw generic McpError without recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Security is sound (no secrets in params), but composition could be tighter, e.g., mark_channels_read with mode='all' is a dangerous default that could cause unintended bulk operations.
Start following a thread to receive notifications
Get information about a specific channel
Get messages from a channel with pagination
Get unread message count and mentions for a channel
Get information about the current user
Get information about a specific team
Get unread message count for a specific team
Output schemas not documented. LLMs cannot infer response structure for any of the 23 tools. Responses are returned as generic content blobs without field definitions, forcing LLMs to parse unstructured output and risking context loss in multi-step chains.
Parameter descriptions missing or incomplete. 'page' and 'per_page' in get_channel_messages lack format guidance (e.g., 'Page number starting at 0' or 'Messages per page, 1 - 200'). 'term' in search_channels and search_users lack examples or constraints. LLMs cannot infer valid ranges or formats.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Get unread message counts for all teams
Get information about a specific thread
Get all messages in a thread
Get unread threads count and mentions for a team
Get information about a specific user
List all channels for the user in a team
List all teams for the current user
List all threads that the user is following in a team
Login to Time Messenger with MFA code. Use this when regular login requires MFA verification. Enter the 6-digit code from your authenticator app.
Mark all available channels or selected channel IDs as read; this action cannot be undone. The all mode includes public, private, DM, and group channels. Followed threads are excluded; use mark_thread_read for threads.
Mark a thread as read up to a specific timestamp
Search channels in a team by name
Search messages in a team
Search users by username, email, or name
Send a message to a channel or reply in a thread
Stop following a thread
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools like mark_channels_read (WRITE, destructive) and send_message (WRITE, irreversible) lack annotations to signal risk to agents. Agents cannot distinguish safe reads from dangerous writes without explicit hints.
Dangerous default in mark_channels_read. mode='all' marks ALL channels as read without confirmation. No dry-run or confirmation step. Agents could accidentally silence all unread messages in one call.
Error handling lacks recovery guidance. Generic McpError with message only. No categorization (retryable vs user-fixable vs fatal). No suggestions for next steps (e.g., 'User not found. Try search_users() first'). Agents cannot self-correct on failures.