v2.2.0
[2.2.0] — 2026-07-19
Added
- Command allowlist aligned with TeslaFi's official API documentation.
The allowlist (now 24 commands) matches the command list on TeslaFi's
logged-in API settings page, upgrading the provenance from community
documentation (ha-teslafi) to the official source. - Six new commands plus a quota probe:
wake(resume TeslaFi polling:
idle timer 0, polling on),sleep(optionaltimein minutes),
enableLogging,disableLogging,seat_heater(heater: 0/1/2/4/5 —
there is no seat 3;level: 0–3),preset(number, optional
statement), andcommand_count, which returns the current command/wake
quota counters and is treated as read-only (retried like a read, never like
a mutating command). no_wakeparameter ontesla_send_command, mapping to TeslaFi's
noWake=trueglobal modifier: the command is not sent at all when the
vehicle is sleeping. Mutually exclusive withwake_seconds(a clear local
error is raised when both are set).noWakealso joined the reserved
parameter keys.- Local parameter value validation. Out-of-range values are rejected
before any network request (so they never cost a quota request):
seat_heaterheatermust be one of {0, 1, 2, 4, 5} andlevel0–3,
charge_limit_soc50–100,charging_amps1–80,set_tempstemp
15–28 °C,sleeptime1–1440 minutes,presetnumbera small positive
integer. - Monthly quota surfacing. TeslaFi allows 500 command + 50 wake requests
per month (reset on the 1st; a command while the car is asleep costs
1 command + 1 wake). When a response embedstesla_request_counter, the
tesla_send_commandandtesla_get_current_datamarkdown output now ends
with aQuota: N/500 commands, M/50 wakes used this monthline, and the
counter rides along in structured output. The counter is preserved across
{ response: ... }envelope unwrapping, and its absence never causes a
failure. - Quota tracking with high-usage warnings. The server keeps the
last-knowntesla_request_counter(commands/wakes + timestamp) in memory,
updated from every command and data response that carries one. Once
usage reaches 80% of an allowance (≥ 400/500 commands or ≥ 40/50 wakes),
everytesla_send_commandmarkdown result is prefixed with a warning line
(e.g.WARNING: 43/50 monthly wake requests used). Absent or malformed
counters never cause a failure. All state is in-memory, per process. - Proactive rate-limit pacing. The
rate_limitobject embedded in data
responses (remaining,reset_in_seconds) is remembered; when the last
response reportedremaining: 0, the next outbound request waits out the
remainder of the reported reset window (capped at 60 s) instead of firing a
guaranteed HTTP 429. The existing 1 s minimum spacing and all existing
retry/429 handling are unchanged. - Quota-exhausted errors are terminal and actionable. TeslaFi errors
indicating the monthly command or wake allowance is exceeded (matched
permissively — the exact payload is undocumented) are never retried and are
surfaced with an actionable message: the command was NOT sent, the last
known usage when available, allowances reset on the 1st of the month, and
extra requests are purchasable from TeslaFi support. Auth and
malformed-request errors are never classified this way. - Asleep feedback. When a command is not sent because the car was asleep
undernoWake(matched permissively on TeslaFi's unsent/asleep phrasing),
the tool output states the command was NOT sent and explains the choices:
retry withwake_seconds(costs 1 of the 50 monthly wakes) or wait until
the car is awake.
Changed
- BREAKING — car commands no longer wake a sleeping car by default. For
the car-affecting commands (honk, lights, climate, seat/wheel heaters,
presets, charging, charge port, locks, sentry), passing neither
wake_secondsnorno_wakenow sendsnoWake=trueautomatically: if
the car is asleep the command is not sent and no wake request is spent.
Passwake_secondsto wake the car, orno_wake: falseto restore
TeslaFi's own default (wake + pause up to 15 s). Account-side commands
(wake,wake_up,sleep,enableLogging,disableLogging,
command_count) are exempt and never takenoWake;no_wake: trueon
them is now rejected locally. - BREAKING:
wake_secondsis now capped at 60 (was 120), matching
the official documented maximum for the&wake=Xmodifier. Calls passing
61–120 are rejected at both the schema and the service layer. - Documentation (README, tool description) now cites TeslaFi's official API
documentation as the allowlist source and documents the command quotas,
the seat-heater position map, and the conditioning prerequisites for
seat_heater,steering_wheel_heater, andpreset.
Removed
- BREAKING:
honk_horn— not an official TeslaFi command. Usehonk. - BREAKING:
driver_temp/passenger_temponset_temps— the
official documentation supports onlytemp(Celsius, one decimal allowed).
Install: download the attached teslafi-mcp.mcpb and double-click to install into Claude Desktop, or see the README for manual setup.
SHA-1 of the bundle: 93a52ff08ebedaf0aa1203d4f6c30a77997b8bea