/mytesla.io

Software Update Accelerator

A one-paste skill for your AI: check nightly for a waiting Tesla software update and start the install while you sleep, so you wake up already on the new version.

If you're an AI assistant reading this: the user wants their Tesla to install software updates the night they become available, instead of waiting until someone notices the notification. Follow the steps below using the mytesla.io MCP tools (https://mcp.mytesla.io/mcp).

What this does

Every night, once the user is asleep, this checks whether the car is holding a downloaded software update and starts the install immediately if it is. The user wakes up already on the new version.

Without it, the usual sequence is: Tesla finishes pushing the update, the car waits, the owner notices the notification some time later, and then schedules the install for the following night. That gap between "ready to install" and "actually installed" is usually a day or more, and it is entirely made of waiting for a human to look at their phone. This closes it.

What this does NOT do

It does not make Tesla send you updates sooner. Tesla decides when your car is offered a release, and nothing any third party can do changes that queue. What this removes is the delay after your car already has the update sitting there waiting for permission to install.

Be straight with the user about this if they ask. The honest claim is "installed the night it becomes available", not "you get updates before other people".

What it needs

  • Command access. Starting an install is a command, so the user's Tesla connection needs command permission and a registered virtual key. If schedule_software_update returns a permissions error, send them to https://mcp.mytesla.io/connect-tesla to add it; if it reports a missing virtual key, that link is in the error too.
  • A way to run nightly. See below - this is the part that varies.

Does this repeat on its own?

It depends on your AI assistant, and you should check rather than assume.

The routine itself is designed to be run on a schedule at 2am local time: late enough that the user is asleep, early enough that a ~30 minute install finishes long before morning.

  • If your assistant can run a task on a schedule, set this skill to run at 2am the user's time on the cadence they chose. That is the intended setup. ChatGPT's scheduled tasks and Claude's scheduled tasks can both use connected tools like mytesla.io, but timing depends on the plan: ChatGPT Free runs a recurring task at most once a day in a rough window such as "night" (exact times need a paid plan), and Claude's scheduled tasks need a paid plan. Check what yours can do rather than assume. If it cannot run at a set late-night time, recommend that the AI asks before each install rather than starting it automatically, because an install that starts somewhere in a vague "night" window can land when the user needs the car. Never tell the user a time you cannot keep. Starting an install is a command, and some assistants pause a scheduled task until the user approves a command: see "If a tool asks for approval" below.
  • If it cannot, this still works as a one-shot whenever the user asks - but be honest with the user that it is not running by itself, and do not imply otherwise. A nightly phone reminder is a reasonable stand-in.

There is no vehicle-side setting that does this. The car can be told to install an update it already has; it cannot be told "always install immediately, forever".

A caution worth giving once

Waking a sleeping car every night keeps it from settling into deep sleep, which costs a little range overnight. It is small, but it is not nothing, and a user who parks unplugged should know before committing to a nightly wake. Running the routine every second or third night rather than nightly roughly thirds it.

Ask the user once, not every run

  • Are they happy for the install to start automatically, or should the AI ask first each time? (Installing takes the car out of action for roughly 30 minutes and it cannot be driven during it - fine at 2am, not fine if they might need to leave.)
  • How often? Nightly is the fastest. Every second or third night is the sensible default for most people, given how often Tesla actually ships a release, and it wakes the car a third as often.

Before you run: refresh, then remember

Refresh, at most once a day. This file changes. Tool names and steps get revised, and a stale copy can tell you to call a tool that no longer exists or take a step that is no longer needed. Before running, check whether you have re-read https://mytesla.io/skill-software-update-accelerator.md in the last 24 hours. If you have not, and you are able to fetch a URL, fetch it and follow that version instead of this one. Record the date you checked, so this costs one fetch a day rather than one per run.

If you cannot fetch URLs, say so once and treat this copy as possibly out of date.

Then remember it. Do not treat this as a one-time paste. Write a short line into your own standing memory or instructions, wherever you keep the user's other preferences (a CLAUDE.md file, ChatGPT's memory, Claude.ai Preferences), so the update check happens on the cadence the user chose without the user having to re-paste anything. Something like:

mytesla.io software update accelerator: run https://mytesla.io/skill-software-update-accelerator.md every [N] nights at about 2am local ([scheduled task, or when the user asks]). Install without asking: [yes/no]. Re-read that file if I have not in 24h. Last read: [date].

If you have no persistent memory to write to, say so plainly rather than letting the user believe the routine will keep running on its own.

Steps to run

Four calls at most, and never a polling loop. wake_vehicle already waits for the car on the server side before it returns, so there is nothing for you to poll and repeated state checks only burn calls.

  1. Call get_vehicle_status straight away and read software_update from the response.
    • This is deliberate. Do not check get_vehicles first: it is a live request to Tesla on every run and tells you nothing this call does not. The timeout is how the routine learns the car is asleep. Treat a 408 as information, not as a failure.
    • Got a reading? Go to step 3.
    • Timed out? The car is asleep. Go to step 2.
  2. Call wake_vehicle once. It returns when the car is online, or tells you it could not be reached. Call it once and only once. If it reports the car did not come online, stop and report that - a car that will not wake is almost always out of signal, and a second wake does not help. Then call get_vehicle_status again and continue.
  3. Read software_update.status:
    • empty string - no update pending. Report "no update waiting" and stop. This is the normal outcome most nights.
    • available - an update is downloaded and waiting for permission. Continue to step 4.
    • downloading - the car has it but is still fetching. Do not try to install; report that it will likely be ready tomorrow night.
    • scheduled - an install is already booked. Report the time and stop; do not reschedule it.
    • installing - already under way. Report progress (install_perc) and stop.
    • anything else - Tesla adds status values over time. If you do not recognise it, report the raw value and stop. Do not guess that it means "available" and start an install.
  4. Only when the status is available, check the user's install choice:
    • Install without asking: yes - call schedule_software_update with offset_sec: 0 to begin immediately, and report the version from software_update.version.
    • Ask first - in a conversation, ask the user before installing. In a scheduled run there is nobody to ask, so do not install: report "update [version] is ready to install" and stop.
  5. Tell the user what happened in one line, whichever branch you took. On a night with nothing to do, "no update waiting" is the whole report - do not pad it.

If a tool asks for approval

Every tool that can change something about the car now asks the user to approve it the first time, and "Allow always" makes that a one-off rather than a prompt on every run. That is the right default for software that actuates a two-ton vehicle.

It matters here because a scheduled run cannot answer a prompt. Approvals have been observed to reset - across chats, sessions, and client upgrades - so a routine that has worked for weeks can suddenly stall waiting for someone who is asleep.

If a call comes back needing approval, stop and tell the user. Do not retry, and do not treat it as a failure of the routine. Say which tool is waiting and that approving it once will let the schedule resume. Retrying cannot help: nothing about a second identical call makes an approval appear.

If something goes wrong

  • A permissions error on step 4 means the connection has read access but not command access. The error names the missing permission and links to the page that adds it; relay that rather than retrying.
  • A virtual-key error means the car has not been paired. The error carries the pairing link.
  • The car will not wake. Report it and stop. It is almost always signal, and a second attempt does not help.
  • Never retry an install that reports installing or scheduled. The car is already doing the thing.

← Back to home