Plugin-based IoT gateway with multi-protocol support, rule engine, MCP server, and real-time dashboard
KC IoT Gateway has 6 tools with basic definitions but significant quality gaps. All tools have descriptions (bilingual English/Chinese), but descriptions are generic and lack actionable context. Input schemas are present but minimal, most parameters lack type constraints, enums, or validation guidance. No output schemas documented. Error handling is present but returns raw JSON errors without recovery guidance. Tool names follow verb_noun convention (list_*, read_*, write_*) but lack specificity about what data is returned or when to use each tool. The write_device tool accepts a JSON string parameter, which is error-prone and lacks format validation. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Composition is reasonable (6 focused tools), but parameter descriptions do not explain dependencies or constraints.
Check if a device is online. 檢查設備是否在線。
Query recent alerts, optionally filtered by severity. 查詢最近的告警,可依嚴重等級篩選。
List all connected IoT devices with their protocol and status. 列出所有已連接的 IoT 設備及其協議和狀態。
List all alert rules. 列出所有告警規則。
Read data from a device. Optionally specify a field name. 讀取設備數據,可指定欄位名稱。
Write/control a device. Params is a JSON string of key-value pairs. 控制設備,params 為 JSON 格式的鍵值對。
write_device accepts 'params' as a JSON string instead of structured object. LLMs frequently malformat JSON strings, and no validation guidance is provided. This violates the constrained-input pattern.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., device_id from list_devices). Violates response-shaper pattern.
Descriptions lack actionable context. 'List all connected IoT devices' does not explain when to call this vs device_status, what fields are returned, or whether results are paginated. Violates tool-description pattern.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
read_device 'field' parameter lacks enum constraint or format guidance. LLMs will hallucinate field names. Should document valid fields or provide discovery mechanism.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. write_device is destructive but unmarked. Violates tool-annotation pattern.