Skip to content

MCP Tools

The add-on ships a built-in MCP server that Claude Code launches automatically, giving it live read/write access to your Home Assistant instance. This is Claude’s only pair of hands — everything it does to your live home goes through these tools, which is what makes deny-lists and voice scoping enforceable in one place (how the layers fit). Verify every tool on your install with brain doctor.

Reading your home

ToolWhat it does
get_entity_stateCurrent state + attributes of any entity
get_all_statesAll entities, filterable by domain and name (capped at 300)
get_areasAreas with their entity ids — resolves “the kitchen lights”
get_registryRegistry listings: areas, floors, labels, devices, entities, integrations, users — with the ids Power Tools need. The safe replacement for reading .storage
get_historyRecent state history (up to 7 days), min/max for numerics
get_statisticsLong-term statistics — “how cold did it get last week?”
get_weather_forecastDaily/hourly forecast
get_camera_snapshotSees a camera — returns the image so Claude can describe it
get_logbook / get_error_logLogbook entries; HA logs from the Supervisor journal
get_automations / get_automation_traceAutomations with status; stored execution traces for debugging
get_ha_config / get_services / get_supervisor_infoConfig details, service catalog, system info
get_device_registryPer-domain entity count summary
list_dashboards / get_dashboardEnumerate dashboards; read one’s full config — the reading half of the fetch-modify-save flow behind Power Toolsupdate_dashboard

Acting on it

ToolWhat it does
call_serviceAny HA service. With return_response: true it routes over the WebSocket API and returns service response data — how Claude captures the area_id from brain.create_area or a todo list’s items
get_service_detailsFull field schema for a domain’s services
control_light / control_climate / control_media_player / control_cover / control_fan / control_switch / control_lock / control_alarm / control_vacuumPurpose-built device control for every major domain
activate_scene / run_script / send_notification / fire_event / reload_configScenes, scripts (with variables), notifications, custom events, config reloads
render_templateRender Jinja2 — test a template before it goes in an automation
remember_factStore a durable household fact in the memory inbox

Scoping & safety

  • Every control tool funnels through the call_service chokepoint, so per-agent service deny-lists (e.g. no lock.unlock for a bedroom satellite) cover all of them at once. Since 1.26.0 the chokepoint also resolves homeassistant.* meta-calls to their targets’ domains — homeassistant.turn_on aimed at a cover is a cover call — refuses targets it can’t resolve (a whole area), and refuses fire_event outright on restricted channels.
  • Voice agents default to mcp_only tool access — HA tools yes, shell and file edits no.
  • Insight and study runs, which run unattended, are scoped from both ends: an explicit read-only allow-list of these tools and an explicit deny-list of every acting one. Both are needed because --allowedTools only governs what runs without a prompt, and a headless run can’t be prompted — so an un-listed tool merely fails rather than being forbidden, which is not the same guarantee with a real house behind it. fire_event and remember_fact are why it’s an explicit list and not a name prefix: both are shaped like reads, and neither is one. The deny list is checked against the server’s own tool names in CI, so a newly added acting tool can’t quietly reach an unattended run.
  • brain.* Power Tools add their own layer: admin gating and id validation inside the service, regardless of who calls.

Generated context

With auto_generate_context on (default), the add-on regenerates /config/CLAUDE.md at startup — a snapshot of your install (entities by domain, automations and their states, add-ons, integrations, directory guide) plus instructions for using the MCP tools and the Power Tools workflow. Claude reads it at the start of every session, which is why it never has to ask what a sensor.lumi_lumi_weather_temperature_3 is doing in your kitchen.