actuate_trunk
ChatGPTToggle the front trunk (frunk) or rear trunk. Modern Teslas auto-close the rear trunk; the front trunk must be closed by hand on most models. Always confirm with the user before calling — opening either creates a theft/weather risk if the user isn't present.
cancel_software_update
ChatGPTCancel a scheduled software update before it installs. Only works between the scheduled time and the actual install start. Does not delete the downloaded update — you can reschedule later.
close_charge_port
ChatGPTClose the charge port door. Only works on cars with a motorised charge port door (most modern Model S/X and some Model 3/Y). If the car rejects the command, the user probably needs to close it by hand. PREREQUISITE: The vehicle must be online and unplugged.
control_windows
ChatGPTVent (slightly open) or close all four windows. The tool resolves the car's current lat/lon internally — you do NOT need to call get_vehicle_status first or pass coordinates. Tesla requires the location match (within ~0.1 miles) as a safety check for 'vent'; 'close' also works this way. PREREQUISITE: The vehicle must be online.
flash_lights
ChatGPTFlash the headlights once. Quieter alternative to honk_horn for 'find my car in a parking lot'. Prefer this over the horn at night or in residential areas. PREREQUISITE: The vehicle must be online.
get_credit_balance
ChatGPTReturn the user's CURRENT credit balance — monthly bucket + extra-usage credits + reset date — read live from the database. Free; does not consume credits or require a subscription. When to call: - The user just told you they topped up, enabled auto-reload, or upgraded plan, and you previously saw insufficient_credits. Call this BEFORE refusing the next command — the balance may now be sufficient. - The user asks 'how many credits do I have?' / 'what's my balance?'. Do NOT call this before every paid tool — the regular paid tools already check balance live. This is for cases where stale context might cause you to refuse incorrectly. IMPORTANT: tier:'none' does NOT mean the user has no usable credits — free-trial, promo, and referral credits all work with no subscription. Always check 'total' for the real spendable balance; never tell the user they have no credits or can't use paid tools based on tier alone.
get_vehicle_status
ChatGPTGet a full snapshot of a Tesla's current state: battery level, charging status, climate, location, doors, windows, and odometer. Use this whenever the user asks 'how's my car?' or any specific question about battery, range, or climate. PREREQUISITE: The vehicle must be online. Before calling this tool, check get_vehicles — if state is 'asleep' or 'offline', call wake_vehicle first and follow its polling pattern to confirm the car is online. Do NOT call this tool on a sleeping car — it costs 1 credit per attempt and will timeout (408) every time until the car is actually online.
get_vehicles
ChatGPTList all Tesla vehicles connected to this mytesla.io account. Returns id, VIN, display name, and current state (online/asleep). Costs no credits. Call it ONCE at the start of a conversation to discover the VIN, then reuse that VIN for every later tool call in the same conversation. IMPORTANT: do not call this repeatedly, and never in a loop. It costs the user nothing but every call is a live request to Tesla, so polling it is the one pattern that costs the service real money while appearing free. In particular: do NOT poll it to wait for a car to wake (wake_vehicle already waits internally and returns when the car is online), and do NOT use it as a recurring state check in a scheduled routine. When you need the car's current state, get_vehicle_status returns it and is paid for.
honk_horn
ChatGPTSound the horn once. Primary use case is 'find my car in a parking lot'. Always confirm with the user before calling — honking is a disturbance to people nearby. PREREQUISITE: The vehicle must be online.
list_routines
ChatGPTList the ready-made routines mytesla.io offers for the user's Tesla, such as a vehicle history log with a dashboard, morning departure prep, overnight off-peak charging, a nightly security check, a weekly digest and a software update accelerator. For each one it returns what the user gets, whether it repeats on the car or as a scheduled task, the tools it uses and its credits per run. Pass routine (an id from the list) to get that routine's full step-by-step instructions. Use it when the user asks what they can do with their car through their assistant, or wants something to happen to their car on a regular basis. Costs no credits, makes no request to Tesla and needs no subscription.
lock_vehicle
ChatGPTLock the doors of a Tesla. Always confirm with the user before calling — they may have intentionally left the car unlocked. PREREQUISITE: The vehicle must be online. Check get_vehicles first — if asleep, use wake_vehicle and its polling pattern before calling.
max_defrost
ChatGPTTurn max defrost on or off. Max defrost overrides cabin temperature to rapidly clear a frozen/fogged windshield. Use for 'defrost the windshield' or weather-driven frost-clear requests. Tesla turns max defrost off automatically after a few minutes; the user can call with on=false to end it early. PREREQUISITE: The vehicle must be online.
open_charge_port
ChatGPTUnlatch the charge port door so the user can plug in. Also unlatches the connector so they can unplug — Tesla uses the same command for both 'open to plug in' and 'release to unplug'. PREREQUISITE: The vehicle must be online.
report_bug
ChatGPTFile a bug report for a command that failed in a way the user finds unexpected. Free: no credits, no subscription required. The report is stored by mytesla.io for its support team, who read every one to prioritise fixes. Nothing is sent to Tesla or to the vehicle. IMPORTANT, when to call: - Only AFTER asking the user and getting an explicit yes. DO NOT auto-file. - Only when the prior error response included suggest_bug_report: true, or when the user proactively asks to file a bug. - Do NOT file for expected outcomes (Tesla account not connected yet, no subscription, insufficient credits, rate limited, virtual key not registered, trim not supported, etc.). What to include: - tool_name: the command that failed (e.g. 'set_seat_heater') - error_code / error_reason: from the failed response - user_description: the user's own words if they provided any - ai_summary: your brief one-sentence take on what went wrong Privacy: user_description may contain free text, so avoid prompting the user for addresses, schedules, or identifiers unrelated to the bug.
reset_valet_pin
ChatGPTClear the current Valet Mode PIN so a fresh one can be set. Use this if the PIN was compromised or forgotten. Valet Mode must be off first.
schedule_software_update
ChatGPTTell the car to install a pending software update after a delay. offset_sec=0 starts immediately; longer values let the user finish their day before the ~30-minute install window. Only works if an update is already downloaded and awaiting install.
set_cabin_overheat_protection
ChatGPTEnable overheat protection so the car automatically vents or runs A/C when the parked cabin exceeds a threshold. fan_only=true uses just the vents (lower battery drain); fan_only=false runs full A/C if needed.
set_cabin_temperature
ChatGPTChange the Tesla's target cabin temperature without starting/stopping climate. Useful when climate is already on and the user wants a different temperature. If climate is off, use start_climate instead (it sets the temperature and turns HVAC on in one call). PREREQUISITE: The vehicle must be online.
set_charge_limit
ChatGPTSet the target state-of-charge percentage. Tesla will stop charging automatically when the battery reaches this level. Use for 'charge to 80%' or 'charge to 100% by 7am tomorrow'. For daily use Tesla recommends 80-90%; 100% is for trips. PREREQUISITE: The vehicle must be online.
set_charging_amps
ChatGPTSet how fast the car draws from the current charger in amps. Useful when sharing a circuit (e.g. 'reduce to 16A so the dryer can run') or limiting draw on a weaker outlet. The car clamps to the charger's maximum.
set_climate_keeper_mode
ChatGPTKeep the cabin climate controlled while parked. Modes: 0 = off 1 = Keep climate on (standard) 2 = Dog mode (also shows 'My owner will be back soon' on the display) 3 = Camp mode (power accessories and USB stay on) Climate must already be on; this tool just prevents it from auto-off-ing.
set_scheduled_charging
ChatGPTSchedule the car to begin charging at a specific time each day. Useful for 'charge during off-peak hours' requests. Pass enable=false to clear the schedule and charge immediately when plugged in.
set_scheduled_departure
ChatGPTTell the car when you plan to leave so it pre-conditions cabin & battery in time, and can optionally charge off-peak only. This is the right tool for 'make sure the car is at 100% by 7am' or 'pre-condition for my 8am meeting'.
set_seat_cooler
ChatGPTSet a cooled seat to a cooling level. Only supported on trims with ventilated seats (most Model S/X Plaid, some Model 3/Y Performance). On unsupported trims Tesla rejects with a clear error — do not retry. Seat cooler uses a DIFFERENT numbering than the seat heater: seat_position: 1=front-left (driver in LHD), 2=front-right. level: 1=low, 2=medium, 3=high. Rear seats are not supported. To turn cooling off entirely, call stop_climate (there is no dedicated off level here).
set_seat_heater
ChatGPTSet a seat heater to off or one of three heat levels. Seat numbering: 0=front driver, 1=front passenger, 2=rear left, 4=rear centre, 5=rear right. Level 0=off, 1=low, 2=medium, 3=high. Climate must be on for seat heaters to actually warm — call start_climate first if the HVAC is off. PREREQUISITE: The vehicle must be online.
set_sentry_mode
ChatGPTEnable or disable Sentry Mode, which records the cameras when the car detects suspicious activity while parked. Sentry uses battery faster than standby — expect ~1% per hour.
set_speed_limit
ChatGPTSet the maximum speed allowed when Speed Limit mode is active. Tesla accepts 50-90 mph. Call speed_limit_activate afterwards to enforce it.
set_steering_wheel_heater
ChatGPTTurn the steering-wheel heater on or off. Only supported on trims with the heated steering wheel option (most Model 3/Y Performance and Model S/X built 2020+). Climate must be on for this to actually warm.
set_valet_mode
ChatGPTValet mode limits speed, locks the glovebox, and hides personal info. Requires a 4-digit PIN the valet enters on the touchscreen to exit. WARNING: never share the PIN over an unencrypted channel.
share_destination
ChatGPTPush a destination to the car's nav so it's ready when the user gets in. Accepts any address, place name, or maps URL — the car's share sheet parses the same formats the mobile app does. Useful for 'route me to my next meeting' workflows.
speed_limit_activate
ChatGPTLock the car to a reduced top speed (set separately via set_speed_limit). Useful for teen drivers or loaned-out cars. Requires the 4-digit PIN set via the mobile app or Tesla touchscreen.
speed_limit_clear_pin
ChatGPTClear the Speed Limit PIN. Speed Limit mode must be off first (call speed_limit_deactivate).
speed_limit_deactivate
ChatGPTRemove the current speed limit. Requires the PIN set via the mobile app or touchscreen.
start_charging
ChatGPTBegin charging the Tesla. Requires the charge cable already plugged in — this command cannot plug the car in for you. If the user asks to 'plug in the car', clarify that only they can physically connect the cable; this tool just starts the charge once connected. PREREQUISITE: The vehicle must be online and the charge cable must be plugged in. If the car isn't plugged in, Tesla will reject the command with a clear error.
start_climate
ChatGPTTurn on the Tesla's HVAC system to pre-condition the cabin. Use this before the user plans to enter the car. PREREQUISITE: The vehicle must be online. Check get_vehicles first — if asleep, use wake_vehicle and its polling pattern before calling.
stop_charging
ChatGPTStop the current charge session. The cable stays physically plugged in; only the flow of energy stops. Use this for scheduling off-peak charging windows or when the user wants to unplug and drive now. PREREQUISITE: The vehicle must be online.
stop_climate
ChatGPTTurn off the Tesla's HVAC system. Use after pre-conditioning is no longer needed, or when the user says they're done with the car. PREREQUISITE: The vehicle must be online. Check get_vehicles first — if asleep, use wake_vehicle before calling.
sun_roof_control
ChatGPTVent or close the panoramic sunroof. Only supported on older Model S vehicles that have the panoramic roof — Tesla will reject the command with a clear error on unsupported models.
trigger_homelink
ChatGPTActivate a HomeLink-programmed device (garage door, gate, etc.). The tool uses the car's own current GPS — you don't need to pass coordinates. The car must be within ~30 meters of the trained HomeLink location for it to respond. PREREQUISITE: The vehicle must be online.
unlock_vehicle
ChatGPTUnlock the doors of a Tesla. Always confirm with the user before calling — unlocking a parked car remotely has obvious security implications. If the user's request is ambiguous (e.g. just 'open the car'), ask whether they mean unlock doors, open trunk, or frunk. PREREQUISITE: The vehicle must be online. Check get_vehicles first — if asleep, use wake_vehicle and its polling pattern before calling.
wake_vehicle
ChatGPTWake a sleeping Tesla and wait for it to come online. Costs 10 credits because wake operations are expensive on Tesla's API, and the charge applies even if the car turns out to be awake already. Only call it when the car is actually asleep: get_vehicles reported it 'asleep' or 'offline', or a command or get_vehicle_status just failed because the car is asleep or unavailable. Do NOT call it before every command or 'to be safe'. A car you have sent commands to in the last few minutes is normally still awake, and commands to an awake car simply work. Wake once, then send the commands the user asked for. This tool handles everything automatically: sends the wake command, then polls internally with exponential backoff (~45s max) until the car reports 'online' or gives up. You will get back a clear status: 'online' (safe to proceed), 'gave_up' (car unresponsive, suggest user check Tesla app), or 'cooldown' (a wake was already sent recently — no credits charged, just wait longer). IMPORTANT: If you get 'cooldown' or 'gave_up', do NOT call wake_vehicle again. Tell the user to wait a minute and try again. Repeated wake calls waste 10 credits each with no benefit.