.claude/skills/cielo-home-api-reverse-engineering/SKILL.md
Cielo Home / Mr Cool minisplit smart AC API details and CLI tool. Use when: (1) Controlling Mr Cool or Cielo Home minisplit AC units programmatically, (2) Building integrations with Cielo Home API (api.smartcielo.com), (3) Token expired and need to refresh credentials for cielo-cli, (4) Need to understand Cielo Home WebSocket command format for device control. Covers API endpoints, authentication flow, HAR-based token extraction, and the Chrome CORS header stripping workaround.
npx skillsauth add Dbochman/dotfiles cielo-home-api-reverse-engineeringInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Cielo Home (home.cielowigle.com) provides a web app for controlling Mr Cool minisplit AC units, but has no public API documentation. Building programmatic control requires reverse-engineering the API from the obfuscated Angular frontend and the Home Assistant community integration.
POST /auth/login requires a
reCAPTCHA token. Neither the HA integration nor node-smartcielo perform programmatic login.authorization header
and an API key in x-api-key.$CIELO_API_KEY env var (extracted from live browser,
differs from the obfuscated JS value in the web app).POST /web/token/refresh with body {"local":"en","refreshToken":"..."}.
Requires authorization header with current access token.| Endpoint | Method | Purpose |
|----------|--------|---------|
| https://api.smartcielo.com/web/devices?limit=420 | GET | List all devices |
| https://api.smartcielo.com/web/sync/db/6?applianceIdList=[ids] | GET | Appliance details |
| https://api.smartcielo.com/web/token/refresh | POST | Refresh access token |
| wss://apiwss.smartcielo.com/websocket/?sessionId=...&token=... | WS | Real-time control |
Commands are sent as JSON over WebSocket. Two main action types:
actionControl: Change a single setting (power, temp, mode, fan, swing)syncState: Set multiple values at onceRequired fields: action, actionSource ("WEB"), macAddress, user_id, fw_version,
deviceTypeVersion, mid ("WEB"), connection_source, applianceId, applianceType,
actions (object with power/mode/temp/fanspeed/swing/turbo/light/followme),
oldPower, and for actionControl: actionType + actionValue.
Critical discovery: Chrome HAR exports strip authorization headers from CORS
requests (cross-origin to api.smartcielo.com). However, WebSocket URLs retain the
token as a query parameter (?sessionId=...&token=...). This is the most reliable
way to extract tokens from a HAR file.
apiwss.smartcielo.comtoken and sessionId from the URL query parameters/Users/dylanbochman/repos/cielo-cli/
~/.config/cielo/config.jsondevices, status, on, off, temp, mode, fan, swing, set, load-harDo9ehqFdb6home.cielowigle.com used SignalR WebSocket and session cookies (node-smartcielo approach). The new API uses REST + standard WebSocket.connectionSource field matters for commands - use the value from the device object.application_version: "1.4.4" in all messages.isFaren: 1 means the device uses Fahrenheit.development
Search the web for current information, news, facts, and answers. Use when asked questions about current events, needing to look something up, finding websites, researching topics, or when you need up-to-date information beyond your training data.
development
Summarize any URL, YouTube video, podcast, PDF, or file into concise text. Use when asked to read an article, summarize a link, get the gist of a video or podcast, extract content from a URL, or when you need to understand what a web page or document contains.
development
Play music via Spotify and control Google Home speakers. Use when asked to play music, songs, artists, playlists, podcasts, or control speakers/volume/audio.
testing
Create new OpenClaw skills, modify and improve existing skills, and measure skill performance with evals. Use when users want to create a skill from scratch, update or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy. Also use when asked to "make a skill", "turn this into a skill", "improve this skill", or "test this skill".