Read Nest device state (thermostats, cameras, doorbells) and set thermostat modes and setpoints via the Smart Device Management API. Trigger phrases: google nest, nest thermostat, nest camera, sdm.
npx skills add https://github.com/Anil-matcha/awesome-muse-connectors --skill google-nest
Read traits and execute commands on Google Nest devices through the Smart
Device Management (SDM) API: thermostats (mode, setpoints, ambient readings),
cameras and doorbells (events, live-stream generation). Use it when the user
asks about their Nest thermostat, wants to change heating/cooling, or wants
camera/doorbell state. Thermostat commands start or stop real HVAC, so they
are confirmation-gated (see Operating Rules).
All commands go through bin/google-nest.py. --project is always the
Device Access project id:
bin/google-nest.py --project <project-id> auth # status check: list structures
bin/google-nest.py --project <project-id> structures # list homes
bin/google-nest.py --project <project-id> devices # list devices with traits
bin/google-nest.py --project <project-id> device --id <id> # read one device's traits
# Writes. Thermostat commands are MEDIUM: --confirm on first use per device,
# then proceed:
bin/google-nest.py --project <project-id> execute --id <thermostat-id> \
--command ThermostatMode.SetMode --param mode=HEAT \
--confirm "set the upstairs Nest to heat"
bin/google-nest.py --project <project-id> execute --id <thermostat-id> \
--command ThermostatTemperatureSetpoint.SetHeat --param celsius=21.5 \
--confirm "set the upstairs Nest heating target to 21.5 degrees"
# Camera live-stream generation is LOW (non-physical): proceeds with a notice:
bin/google-nest.py --project <project-id> execute --id <camera-id> \
--command CameraLiveStream.GenerateRtspStream
--param values are JSON-parsed (mode=HEAT stays a string, celsius=21.5
becomes a number). The sdm.devices.commands. prefix is optional. The device
--id is the last path segment of the device name shown by devices.
google-nest (credential is collected ascustom.google-nest)
flow (credentials.request_api_access). Set up: create a Google Cloud
project, register it in the Device Access Console (one-time $5 individual
registration fee), enable the Smart Device Management API, and authorize
with scope https://www.googleapis.com/auth/sdm.service. Access tokens
last about an hour; store the refresh token so the connector can renew.
https://www.googleapis.com/auth/sdm.servicesmartdevicemanagement.googleapis.combin/google-nest.py --project <project-id> authThermostatMode.SetModeand ThermostatTemperatureSetpoint.SetHeat/SetCool start or stop real
heating/cooling: --confirm "<exact physical effect>" is required the
first time a thermostat is actuated; the CLI records it locally
(~/.config/muse-connectors/google-nest/confirmed.json) and later runs
proceed.
CameraLiveStream.GenerateRtspStream only mints a stream URL; it prints a
notice and runs. The URL expires, so hand it to the user promptly instead
of storing it.
package, doorbell press) via device. They do not actuate hardware; treat
event reads as data.
that exact change. Confirming "set it to heat" does not cover turning the
system Off.
auth, structures, devices, device) never need confirmation.account; no recurring API fee, but per-project rate limits apply, so avoid
tight polling loops.
not print, log, or transmit the token value.
🧪 Draft: written from Google's public SDM API docs; not yet live-tested
end-to-end. The :executeCommand request shape and --param parsing are
untested against a real Nest device.
Take anil-matcha/google-nest from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.