Let other agents speak house
Another agent can use the household capabilities without getting Home Assistant's plumbing.
One constrained household capability model
Dobby's own model and an outside agent over MCP use the same house-specific tool modules. A house with no vacuum exposes no vacuum tools. A lock exposes secure and never unlock. Every tool call reaches the same device validation and gets the same refusal.
Cards and schedules enter one layer lower. They bypass model tools and converge on the same device-agent command boundary. That boundary still knows the caller. A device marked hands_only: true refuses Dobby's model, MCP, and schedules either language layer authored. A card or an admin-authored schedule remains a person's hand and still works.
Dobby serves the outside door over MCP at /mcp. Claude Code is the concrete example below. Any client that speaks streamable HTTP can use it.
Mint a token
On /admin, in the System section, mint a token with a label for the agent that will hold it: Ann's laptop, the kitchen Mac. Every call made with the token is logged under that label. The token is shown once.
What you should see
And beneath it, once: The token for Ann's laptop is ‹43 characters› — copy it now. Dobby keeps only a fingerprint, so it will not be shown again.
revoke closes the door. The next request with that token gets the same 401 as a made-up one. There is no undo; mint a fresh token.
Connect your agent
For Claude Code, one command:
claude mcp add --transport http dobby http://192.168.1.20:4000/mcp \
--header "Authorization: Bearer <the token>"
What you should see
$ claude mcp list dobby: http://192.168.1.20:4000/mcp (HTTP) - ✔ Connected
What it can do
The MCP client can read and set managed devices, write schedules and standing rules, read the household's record, discover recognized Home Assistant entities, and propose or confirm house changes. It does not receive the Dobby conversation. It receives the same house tool modules Dobby's model receives.
What you should see
acknowledge_rule, confirm_device, confirm_rule, create_schedule, delete_rule, delete_schedule, discover_entities, history, light_get_status, light_set_brightness, light_turn_off, light_turn_on, list_rules, list_schedules, propose_device, propose_rule, set_rule_enabled, set_schedule_enabled, thermostat_get_status, thermostat_set_temperature, wifi_get_status
The tools of a house with a thermostat, a light, and a printer.
The trust
Whoever holds a token speaks for the household, the same way anyone with the Wi-Fi password does. That includes confirming a device into the house. Dobby does not defend against a stolen token. Home Assistant takes the same stance with its own long-lived tokens. What the token adds is a name, so the log says which agent asked.
A real session
August 22, 2026. Claude Code, pointed at a running house, asked to adopt one light. The tool calls and results are verbatim. The prose between them is Claude's.
- Claude
Step 1: discover_entities.
discover_entities → 12 entities, among them light.kitchen_lights · type light · Kitchen Lights
- Claude
light.kitchen_lights is listed with type light. Step 2: propose_device.
propose_device(id light:kitchen, type light, name "kitchen lights", entity light.kitchen_lights) → proposal 1 · proposed · proposed_by "Maya's walkthrough"
- Claude
Proposal id 1 returned. Step 3: you've agreed to this specific proposal, so confirming it.
confirm_device(1) → applied: true · "written to the house file; the house has taken it on"
- Claude
Applied. Step 4: re-discover, then read the light's status.
discover_entities → 11 entities; light.kitchen_lights no longer among them
light_get_status(light:kitchen) → available · on · 71% · dimmable
Between the third and fourth calls, Dobby wrote the file and restarted the house. It answered only when the new device was running. The agent's connection survived the restart.
What you should see
16:23:06 tool call discover_entities Maya's walkthrough 16:23:09 tool call propose_device Maya's walkthrough 16:23:12 tool call confirm_device Maya's walkthrough 16:23:14 tool call discover_entities Maya's walkthrough 16:23:16 tool call light_get_status Maya's walkthrough
The activity log on /admin, every line under the token's label. And in the file:
- aliases: - the kitchen light bindings: light: light.kitchen_lights id: light:kitchen name: kitchen lights type: light
Describe the house once
First ask the agent to find the matches and show its work: “Dobby at 192.168.1.20:4000 runs my house. I have a thermostat, three lights, and a robot vacuum, all on Home Assistant. Discover them and show me the proposals. Do not apply them yet.”
The agent returns the numbered proposals with the exact names, types, aliases, and Home Assistant bindings. Read them. Then say: “Confirm proposals 4 through 8.” Only that second turn authorizes the agent to write the house. Dobby restarts with the confirmed devices, and the cards fill in as Home Assistant reports.