Self-contained MCP server with full access control for Matrix chat integration. Supports pairing, allowlists, group support, and state management. Uses Matrix Client-Server API r0/v3 with bot access_token for inbound/outbound messaging, media upload, and reactions. E2EE rooms not supported.
Four tools with schemas present but significant quality gaps. Tool names lack clear action verbs (matrix:access, matrix:send, matrix:sync, matrix:rooms use colons instead of underscores, violating verb_noun convention). Descriptions exist but are generic and lack actionable context for LLM selection. Parameters have types but many lack descriptions or constraints. matrix:access has 11 parameters with minimal guidance on mutual exclusivity or dependencies. No output schemas documented. Error handling is absent from tool definitions.
Manage Matrix channel access control: pairing, allowlists, group support, and state management
List and manage Matrix rooms: get room info, members, state, and manage room settings
Send messages, files, and media to Matrix rooms with support for text, images, audio, video, and generic files
Synchronize with Matrix homeserver to receive new messages and events from rooms
Tool names use colon notation (matrix:access) instead of verb_noun convention (e.g., manage_access, send_message). LLMs rely on action verbs to infer intent; colon-prefixed names obscure the primary action.
matrix:access parameter 'action' is a free-form string with 9 possible values ('list', 'pair', 'approve', 'deny', 'allow', 'disallow', 'group', 'policy', 'config') but no enum constraint. LLMs will hallucinate invalid actions. Parameter descriptions for 'code', 'mxid', 'roomId', 'groupName', 'policy' lack guidance on which actions require which parameters.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., what does matrix:rooms return? room IDs? member counts? state?). Breaks tool composition.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 31 | 2026-07-28+ | v2 |
matrix:send has mutually exclusive parameters (text vs html vs file vs reaction) but no documentation of this constraint. LLMs may pass multiple simultaneously, causing ambiguous failures.
Tool descriptions are generic and lack WHEN/WHY guidance. 'Manage Matrix channel access control' does not tell an LLM when to call this vs matrix:rooms. 'Send messages, files, and media' does not explain prerequisites (room must be joined?) or error recovery paths.