With Device control, the Bot gets the same tools as Home Assistant's voice assistant, Assist, and it can only see and control the entities you exposed to Assist.
All Grok Bot questions: https://www.soundminds.ai/faq.
Last updated Nov 11, 2026
Give your Bot Home Assistant's Device control address, sign it in as a non-admin Home Assistant user, and expose only the devices you want it to touch.
All Grok Bot questions: the SoundMinds Grok Bot FAQ.
Home Assistant has a built-in Model Context Protocol (MCP) server, and Grok Bot can add an MCP server as a custom connector. Home Assistant offers more than one address for its MCP server. Use the one called Device control. With Device control, the Bot gets the same tools as Home Assistant's voice assistant, Assist, and it can only see and control the entities you exposed to Assist.
We tested this on Nov 11, 2026 with a simulated pool on a test copy of Home Assistant 2026.11.1. Grok Bot read the pool's chlorine level, turned on the pool pump, and saw the pump's power draw. When it tried to turn on the salt chlorinator, which we hadn't exposed, Home Assistant refused.
A pool is a good example because it has one device you probably want your Bot to run, the pump, and one you might not, the salt chlorinator. Here is what we set up and what happened.
In our test, these were the Bot's real requests through that connector, in order:
The point to take away is that the limit lives in Home Assistant, not in the Bot. If a device isn't exposed, a Bot on the Device control address can't switch it.
I'm not giving water chemistry advice here. If you ask your Bot to run the pump when chlorine is low, pick the threshold yourself.
Home Assistant's MCP server page says Device control "only accesses the entities you expose to voice assistants." The other choice, called Home Assistant, "accesses everything and requires an administrator account." The Main URL "exposes all tools and requires an administrator account."
We tested both ways. With the Bot's non-admin user, the Device control address worked, and the Main URL was refused with an HTTP 403 error. With an admin user on the Main URL, there were 20 tools instead of 9, including tools to read history and logs and to run any Home Assistant action. In that admin test, a direct action turned on the salt chlorinator even though it wasn't exposed. (We turned it right back off.) That's why I recommend Device control with a non-admin user.
Exposing only what the Bot should touch is the same idea Home Assistant uses for voice. Its page on exposing entities says you expose entities to Assist "to avoid that sensitive devices, such as locks and garage doors, can inadvertently be controlled by voice commands."
Full disclosure, C75QKGMBPQE8 is my referral code, so if you'd like to use it, open https://grok.com/refer/bot?code=C75QKGMBPQE8.
Home Assistant's page documents OAuth for sign-in. In our test we used a long-lived access token for the non-admin user instead, sent as a Bearer header, and that worked. I haven't tested Grok Bot's OAuth sign-in against Home Assistant.
Apps are account-wide in Grok Bot, so a connected app is available to every Bot you run. If you want only one Bot near your house, keep that in mind before you add it.
Our test ran Home Assistant on the same computer as the Bot, which made filming safe and simple. In a real home, Home Assistant runs on your own hardware, and the Bot runs on its own computer, so the Bot needs a way to reach your house.
Home Assistant's MCP page says that if the AI agent runs in the cloud, "your Home Assistant instance must be accessible from the internet," using Home Assistant Cloud or another method of remote access.
If you'd rather not open Home Assistant to the internet, you can reach it over your own Tailscale network. The steps are on our FAQ page about letting Grok Bot reach a private MCP server on your tailnet. I haven't tested Home Assistant over a tailnet yet.
Power is the other job people ask about. Home Assistant's Energy page talks about using it to "charge the car when power is cheap or your panels are at their peak, and set automations that quietly save you money in the background." The Energy dashboard can also take power sensors, in units such as W or kW.
In our test, the Bot could read both numbers it would need: the electricity price and the pump's power draw. With our simulated numbers, 1,150 W at $0.34 per kWh works out to about 39 cents for each hour the pump runs. That's our arithmetic on simulated values, not a real tariff.
A Grok Bot routine can run on a schedule, so a routine could check the price and the pump every few hours. Routine schedules must be at least five minutes apart, and each run spends usage. I haven't tested a routine that switches the pump based on price, so I'll check whether it works before I say it does. For anything that changes a real system, keep it behind approval.
Home Assistant: Model Context Protocol server integration: https://www.home-assistant.io/integrations/mcp_server/
Home Assistant: Expose entities to Assist: https://www.home-assistant.io/voice_control/voice_remote_expose_devices/
Home Assistant: Authentication and long-lived access tokens: https://www.home-assistant.io/docs/authentication/
Home Assistant: Energy: https://www.home-assistant.io/docs/energy/
Grok Bot docs: Use the computer and apps: https://docs.x.ai/grok-bot/computer-and-apps
Grok Bot docs: Vault: https://docs.x.ai/grok-bot/vault
Grok Bot docs: Skills, routines, and automations: https://docs.x.ai/grok-bot/skills-routines-and-automations
Grok Bot changelog: https://x.ai/changelog/bot
SoundMinds FAQ: Letting Grok Bot reach a private MCP server on your tailnet: https://www.soundminds.ai/faq/tailscale-private-mcp
See how I set up Grok Bot: https://www.soundminds.ai/setup.