MCP server for Home Assistant integration, providing tools to interact with Home Assistant entities, automations, scripts, and other components
78 tools with severe definition gaps. Examined tools/automations.py, tools/lights.py, tools/system.py, tools/alarm.py, and others. Most tools lack visible input schemas in source code, parameter types and descriptions are not declared in the tool registration. Descriptions exist but are minimal (10-50 chars typically), providing little context for LLM selection. No evidence of enum constraints, format specifications, or parameter validation guidance. Error handling is absent, no recovery hints or actionable error messages. Tool names follow verb_noun convention (good), but lack of schema visibility and sparse descriptions prevent confident LLM reasoning. High-risk tools (restart_home_assistant, delete_automation, unlock_door) have no confirmation patterns or permission gates visible.
No input schemas visible in source code. Tools registered via @mcp.tool() decorator but parameter types, constraints, and descriptions not declared. Schema score 0 for all 78 tools.
Destructive and irreversible tools (delete_automation, delete_script, delete_area, delete_helper, unlock_door, disarm_alarm, restart_home_assistant) lack confirmation patterns, dry-run support, or permission gates. No evidence of access control.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
Tool descriptions are minimal (10-50 chars), providing insufficient context for LLM selection. No guidance on WHEN to use each tool, dependencies, or expected output structure. Baseline for A+ tools is 50-200 chars.
No error handling guidance visible. Tools do not return actionable error messages, recovery hints, or error classification (retryable vs user-fixable vs fatal). LLM cannot self-correct on failures.
List tools (list_automations, list_lights, list_sensors, etc.) show no pagination parameters (limit, offset, page_size) or result count documentation. Large result sets will blow context windows.