MCP channel server for the Zalo Bot API. Bridges Zalo messages into an MCP client session.
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and error handling. 'reply' has a clear action verb and reasonable description (97 chars), but lacks guidance on error recovery or prerequisites. 'channel_status' has a minimal description (106 chars) and empty input schema with no parameters documented. Neither tool includes error classification, recovery guidance, or output schema documentation. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. Naming is acceptable but descriptions fall short of LLM-optimized standards (target 50-200 chars). Parameter descriptions are present but generic.
Poller state, number of messages delivered to this session, and the time of the most recent Zalo poll.
Send a text message to a Zalo chat. Only chats that have already messaged this session are accepted. Long text is split into 2000-character messages automatically. Markdown (bold, italic, code, headings, lists) is rendered.
channel_status has empty input schema with no parameters documented.
No error handling guidance in either tool. Descriptions do not explain what to do on failure (e.g., 'chat_id not found', 'rate limit exceeded'). Missing recovery patterns.
No output schema documented for either tool. LLMs cannot plan downstream calls or extract required fields without knowing response structure.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. 'reply' is destructive (sends messages) but not marked; 'channel_status' is read-only but not marked.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | <=2025-11-25 | v2 |
'reply' description lacks prerequisites and dependency hints. Does not explain that 'chat_id' must come from a prior message or discovery step.