create_schedule
ChatGPTCreate a new schedule or countdown timer to automatically turn a device on or off. CRITICAL RULE: For ANY relative countdown or delay (e.g. '2 minute baad', 'after 5 minutes', '15 second baad', 'in 30 seconds'), YOU MUST ALWAYS PASS delaySeconds (e.g. 120 for 2 minutes, 300 for 5 minutes, 15 for 15 seconds) INSTEAD OF runAt. NEVER calculate or generate runAt for relative times because your internal AI clock does not match the live server clock! ONLY use runAt when the user specifies an explicit fixed wall-clock time like '1:30 PM' or '8:00 AM'.
delete_schedule
ChatGPTDelete or cancel an existing device schedule or countdown timer. Use when user asks to delete, cancel, or remove a schedule (e.g., 'fan ka schedule delete kar do', 'cancel the 1:30 PM timer', or 'remove schedule 3').
device_control
ChatGPTControls a SwitchNest smart-home device. Use this tool whenever the user explicitly or implicitly asks to turn a device ON or OFF. Supports immediate commands, auto-turn-off durations (e.g. 'Fan on karo aur 15 second baad off kar dena', 'Turn on for 15 seconds'), and delayed commands without immediate toggle (e.g. '15 second baad fan on karo', '2 minute baad band kar do' -> use delaySeconds: 15 or 120). The request may originate from typed text or speech/voice transcription (e.g. 'bulb off karo', 'bhai bulb off kar do', 'fan on karo', 'bedroom ki tube light band karo', 'turn on the bulb', 'switch off the light'). MANDATORY: You must execute this tool to perform the physical action. Never state or claim that a device was turned on or off unless this tool has executed and returned verified: true.
get_automation_suggestions
ChatGPTAnalyze device usage patterns over the past 14 days and suggest automations. For example: 'You turn the Fan on every morning at 7:00 — create a daily schedule?' Returns a list of suggestions with confidence scores.
get_device_capabilities
ChatGPTRetrieves the hardware and software capabilities of a specific device (e.g. speed steps for fans, temperature range for AC, brightness, risk level). Resolves automatically across the user's properties using deviceId.
get_device_status
ChatGPTGet the current verified status and details of a single device by its ID across any of the user's accessible homes.
get_energy_usage_summary
ChatGPTGet an energy usage and device power consumption summary for a home over the last N days. Returns total toggle counts, estimated energy on-time per device, daily activity history, and member usage statistics.
get_home_context
ChatGPTRetrieves the active real-time context of the user's properties, including recent device interactions, active room, last controlled device, and online board status. If homeId is omitted, returns portfolio overview across all properties. MANDATORY: Call this tool when the user refers to an ambiguous pronoun like 'turn it on', 'ab isko band karo', or asks 'kya chal raha hai'.
list_devices
ChatGPTList all smart-home devices the user has access to across all their homes, or filter by a specific home and/or room. Returns device ID, name, type, current status (on/off), offline state, room, and home. MANDATORY: Always call this tool first if you do not already have the numeric deviceId corresponding to the user's spoken or typed request (e.g. 'bulb', 'light', 'tube light', 'fan', 'ac', 'bedroom light', 'bhai bulb off kar do'). If multiple devices match (e.g. two bulbs in different rooms), do not guess; ask the user to clarify which one they mean.
list_devices_in_room
ChatGPTList all devices assigned to a specific room, including their current status.
list_favorites
ChatGPTList the user's favorite devices and quick controls configured for fast access. Shows favorite device name, current status, room, and preferred action.
list_homes
ChatGPTList all smart homes or properties the user owns or has access to, including home ID, name, role, and total device count. Use this when the user asks about their homes or to explore available properties.
list_rooms
ChatGPTList rooms across all the user's homes, or filter by a specific home. Returns room IDs, room names, and the home they belong to.
list_routines
ChatGPTList all configured smart-home life routines and automations across all homes/properties the user has access to (e.g. Good Night, Good Morning, Work Mode, Leaving Home). Returns routine ID, name, homeId, homeName, trigger phrases, execution mode (auto vs ask), and actions.
list_scenes
ChatGPTList all available scenes and automations for the user's home (e.g. 'All Lights OFF', 'Good Night', 'Good Morning', 'Away Mode', or custom scenes). Returns scene ID, name, description, and list of device actions.
list_schedules
ChatGPTList all scheduled automations and active timers for devices across the user's homes. Returns schedule ID, device name, action (on/off), type (daily/weekly/once/cron), next run time, and enabled status.
room_control
ChatGPTTurn all devices in a room on or off simultaneously. Use this when the user speaks or types room-level bulk commands (e.g. 'bedroom ki saari light band kar do', 'turn off all devices in the living room', 'office all on'). Each device action is individually logged and verified.
run_routine
ChatGPTExecutes a smart-home routine by its numeric routineId, routineName, or standard intent (e.g. 'GOOD_NIGHT', 'GOOD_MORNING', 'START_WORK', 'LEAVING_HOME'). Multi-home aware: homeId is optional. If the user has multiple properties with similar routines, specify homeName or routineId. All actions inside the routine are executed atomically with hardware state verification.
run_scene
ChatGPTExecute a smart-home scene by its ID or by name (e.g. 'Good Night', 'All Lights OFF', 'Good Morning', 'Away Mode'). Controls multiple devices simultaneously according to the scene's configured actions.
update_schedule
ChatGPTUpdate, edit, or reschedule an existing device schedule/automation by its scheduleId or deviceId. Use when user asks to change the schedule time, action, or enable/disable it (e.g., 'usko change krke 1.29 pe kro', 'reschedule fan to 1:29 PM', 'change fan schedule to turn ON instead of OFF', or 'disable the 1:30 schedule'). Accepts flexible time strings like '1:29 PM', '13:29', '1.29 PM', or full ISO datetime.