Dobby·Guide github.com/mhyrr/dobby

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

Ann's laptopminted Aug 22, 2026

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>"
Use the address, not the name Claude Code's MCP client (2.1.240, August 2026) does not resolve .local names. It times out. Use the address Dobby prints at startup: the house answers at http://dobby.local:4000/ (192.168.1.20). Any MCP client that speaks streamable HTTP connects the same way.

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.

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.