{"openapi":"3.1.0","info":{"title":"Rachio (BYOK) API","version":"0.1.0","description":"Rachio (BYOK) lets an AI assistant read your own Rachio data through the Rachio API with a key you supply (API token (Rachio app: Profile, API key, Copy)). Read-only: 11 tools (get_person_id, get_person, get_device, get_current_schedule, list_device_events, list_upcoming_runs, get_forecast, get_zone, get_schedule_rule, get_flex_schedule_rule, list_webhook_event_types). The BYOK key travels with...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-rachio.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-rachio/docs"},"termsOfService":"https://connectorbay.com/byok-rachio/terms"},"servers":[{"url":"https://byok-rachio.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-rachio/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, which include controller coordinates). Ema","description":"Get a Rachio person's username, creation date and their controllers (devices, which include controller coordinates). 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 (l","description":"Get one controller: name, online status, model, serial number, schedule mode, on/off and its zones and schedule rules (location and MAC address are not returned). 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_device_events":{"post":{"operationId":"list_device_events","summary":"List events of a controller (watering started or finished, rain delays, schedule changes) between two times. Use for \"Wh","description":"List events of a controller (watering started or finished, rain delays, schedule changes) between two times. Use for \"What did my Rachio controller do over the past week\".","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"},"start_time":{"description":"Start of the window as Unix time in milliseconds.","minimum":0,"title":"Start Time","type":"integer"},"end_time":{"description":"End of the window as Unix time in milliseconds.","minimum":0,"title":"End Time","type":"integer"}},"required":["device_id","start_time","end_time"],"title":"list_device_eventsArguments","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 (rain, freeze, wind). 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_forecast":{"post":{"operationId":"get_forecast","summary":"Get the current weather and the predicted forecast for a controller's location. Use for \"What is the weather forecast fo","description":"Get the current weather and the predicted forecast for a controller's location. Use for \"What is the weather forecast for my Rachio controller\".","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"},"units":{"description":"Unit system for the forecast, for example US or METRIC.","maxLength":10,"title":"Units","type":"string"}},"required":["device_id","units"],"title":"get_forecastArguments","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, soil, crop, nozzle, shade, area and last watered date. Use f","description":"Get one watering zone: number, name, enabled flag, runtime, soil, crop, nozzle, shade, area 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/get_schedule_rule":{"post":{"operationId":"get_schedule_rule","summary":"Get one fixed schedule rule: name, enabled flag, start date, total duration, zones with durations and cycle and soak set","description":"Get one fixed schedule rule: name, enabled flag, start date, total duration, zones with durations and cycle and soak settings. Use for \"What does my Rachio schedule rule water and for how long\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"schedule_rule_id":{"description":"Schedule rule id (a UUID from get_device).","maxLength":200,"title":"Schedule Rule Id","type":"string"}},"required":["schedule_rule_id"],"title":"get_schedule_ruleArguments","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_flex_schedule_rule":{"post":{"operationId":"get_flex_schedule_rule","summary":"Get one flex (weather-adjusted) schedule rule by id. Use for \"What does my Rachio flex schedule look like\".","description":"Get one flex (weather-adjusted) schedule rule by id. Use for \"What does my Rachio flex schedule look like\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"flex_schedule_rule_id":{"description":"Flex schedule rule id (a UUID from get_device).","maxLength":200,"title":"Flex Schedule Rule Id","type":"string"}},"required":["flex_schedule_rule_id"],"title":"get_flex_schedule_ruleArguments","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_webhook_event_types":{"post":{"operationId":"list_webhook_event_types","summary":"List the event types that a Rachio webhook can subscribe to. Use for \"Which Rachio webhook event types exist\".","description":"List the event types that a Rachio webhook can subscribe to. Use for \"Which Rachio webhook event types exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_webhook_event_typesArguments","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}}}}