{"openapi":"3.1.0","info":{"title":"Rachio (BYOK) API","version":"0.1.0","description":"Rachio (BYOK) lets an AI assistant read your own Rachio devices and, with your approval of each change, change their state through the Rachio API with a key you supply (API token (Rachio app: Profile, API key, Copy)). Read tools plus 3 device-changing tools (start_zone, stop_watering, set_rain_delay); each change runs only when confirm is yes, after you approved it in chat. 9 tools in all...\n\nMost operations are read-only. These change the state of a device and run only with confirm = \"yes\" after the user approved that change: start_zone, stop_watering, set_rain_delay. The same tools are available over MCP (streamable HTTP) at https://byok-rachio-control.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-rachio-control/docs"},"termsOfService":"https://connectorbay.com/byok-rachio-control/terms"},"servers":[{"url":"https://byok-rachio-control.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-rachio-control/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_person_id":{"post":{"operationId":"get_person_id","summary":"Get the Rachio person id that belongs to the token; needed for get_person. Use for \"What is my Rachio account id\".","description":"Get the Rachio person id that belongs to the token; needed for get_person. Use for \"What is my Rachio account id\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_person_idArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_person":{"post":{"operationId":"get_person","summary":"Get a Rachio person's username, creation date and their controllers (devices). Email and full name are not returned. Use","description":"Get a Rachio person's username, creation date and their controllers (devices). Email and full name are not returned. Use for \"Which Rachio controllers are on my account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"person_id":{"description":"Person id from get_person_id.","maxLength":200,"title":"Person Id","type":"string"}},"required":["person_id"],"title":"get_personArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_device":{"post":{"operationId":"get_device","summary":"Get one controller: name, online status, model, serial number, schedule mode, on/off and its zones and schedule rules. U","description":"Get one controller: name, online status, model, serial number, schedule mode, on/off and its zones and schedule rules. Use for \"Is my Rachio controller online and which zones does it have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"description":"Rachio controller (device) id, a UUID; get_person lists the ids.","maxLength":200,"title":"Device Id","type":"string"}},"required":["device_id"],"title":"get_deviceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_current_schedule":{"post":{"operationId":"get_current_schedule","summary":"Get the schedule currently running on a controller, if any. Use for \"Is my Rachio watering right now\".","description":"Get the schedule currently running on a controller, if any. Use for \"Is my Rachio watering right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"description":"Rachio controller (device) id, a UUID; get_person lists the ids.","maxLength":200,"title":"Device Id","type":"string"}},"required":["device_id"],"title":"get_current_scheduleArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_upcoming_runs":{"post":{"operationId":"list_upcoming_runs","summary":"List the scheduled watering runs for the next 14 days in start order, with schedule name, zones, durations and predicted","description":"List the scheduled watering runs for the next 14 days in start order, with schedule name, zones, durations and predicted skips. Use for \"When will my Rachio sprinklers run next\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"description":"Rachio controller (device) id, a UUID; get_person lists the ids.","maxLength":200,"title":"Device Id","type":"string"}},"required":["device_id"],"title":"list_upcoming_runsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_zone":{"post":{"operationId":"get_zone","summary":"Get one watering zone: number, name, enabled flag, runtime and last watered date. Use for \"How is zone 4 configured in R","description":"Get one watering zone: number, name, enabled flag, runtime and last watered date. Use for \"How is zone 4 configured in Rachio\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"zone_id":{"description":"Zone id (a UUID from get_device).","maxLength":200,"title":"Zone Id","type":"string"}},"required":["zone_id"],"title":"get_zoneArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/start_zone":{"post":{"operationId":"start_zone","summary":"Start watering one zone now for a number of seconds (capped here at 30 minutes). This changes the physical sprinkler con","description":"Start watering one zone now for a number of seconds (capped here at 30 minutes). This changes the physical sprinkler controller and uses water. Use for \"Water zone 4 of my Rachio for 10 minutes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"zone_id":{"description":"Zone id (a UUID from get_device).","maxLength":64,"title":"Zone Id","type":"string"},"duration":{"description":"How long to water, in seconds, 1 to 1800.","maximum":1800,"minimum":1,"title":"Duration","type":"integer"},"confirm":{"const":"yes","description":"Must be exactly yes, only after the user approved this change in chat.","title":"Confirm","type":"string"}},"required":["zone_id","duration","confirm"],"title":"start_zoneArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":false,"x-changes-device-state":true,"x-requires-confirmation":"confirm"}},"/v1/tools/stop_watering":{"post":{"operationId":"stop_watering","summary":"Stop all watering on a controller immediately. This changes the physical sprinkler controller and uses water. Use for \"S","description":"Stop all watering on a controller immediately. This changes the physical sprinkler controller and uses water. Use for \"Stop my Rachio sprinklers now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"description":"Rachio controller (device) id, a UUID; get_person lists the ids.","maxLength":64,"title":"Device Id","type":"string"},"confirm":{"const":"yes","description":"Must be exactly yes, only after the user approved this change in chat.","title":"Confirm","type":"string"}},"required":["device_id","confirm"],"title":"stop_wateringArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":false,"x-changes-device-state":true,"x-requires-confirmation":"confirm"}},"/v1/tools/set_rain_delay":{"post":{"operationId":"set_rain_delay","summary":"Set a rain delay on a controller so scheduled watering is skipped for a number of seconds; 0 clears the delay. This chan","description":"Set a rain delay on a controller so scheduled watering is skipped for a number of seconds; 0 clears the delay. This changes the physical sprinkler controller and uses water. Use for \"Delay my Rachio sprinklers for 2 days because of rain\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"description":"Rachio controller (device) id, a UUID; get_person lists the ids.","maxLength":64,"title":"Device Id","type":"string"},"duration":{"description":"Delay in seconds, 0 to 604800 (7 days); 0 clears the delay.","maximum":604800,"minimum":0,"title":"Duration","type":"integer"},"confirm":{"const":"yes","description":"Must be exactly yes, only after the user approved this change in chat.","title":"Confirm","type":"string"}},"required":["device_id","duration","confirm"],"title":"set_rain_delayArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":false,"x-changes-device-state":true,"x-requires-confirmation":"confirm"}}}}