A multi-participant chatroom MCP server with topic-based conversations, message persistence, and participant management
11 tools with complete schemas and descriptions, but quality is uneven. Naming follows verb_noun convention well (create_topic, post_message, list_participants). Descriptions are present but brief (avg ~50 chars, below the 194-char baseline). Parameters have types and descriptions, but lack enums for constrained values (e.g., status, scope, role). No output schemas documented. Error handling is minimal, no recovery guidance or actionable error messages visible in tool definitions. Composition is reasonable (single responsibility per tool), but some tools conflate concerns (post_summary with scope parameter could be two tools). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear WRITE vs READ_ONLY risk labels.
Close a topic to prevent further messages
Create a new topic for conversation
Get the read cursor position for a participant in a topic
List all registered participants
List all topics, optionally filtered by participant and status
Post a message to a topic
Post a summary of topic discussion
Read messages from a topic with optional filtering
No output schemas documented. LLMs cannot infer what fields to expect from tool responses, forcing them to guess at downstream field names and risk broken tool chains.
Constrained parameters lack enums. 'status' accepts 'open', 'closed', 'all' but is defined as free-form string. 'scope' in post_summary and read_summary accepts 'all' or participant name but has no enum. LLMs will hallucinate invalid values.
Tool descriptions are too brief (avg ~50 chars vs 194-char baseline). Missing context on WHEN to use each tool and dependencies. E.g., 'Get the read cursor position' does not explain what a cursor is or why an agent would need it.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Read the latest summary for a topic
Register a participant in the chatroom
Set the read cursor position for a participant in a topic
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear WRITE vs READ_ONLY risk labels in metadata. Agents cannot determine which tools are safe to retry or have side effects.
post_summary and read_summary conflate two concerns via 'scope' parameter (global vs per-participant). Should be split into separate tools (post_global_summary + post_participant_summary) for clarity and single responsibility.