MCP server for Tesla vehicle control via Fleet API
Strong tool definitions with clear naming, comprehensive descriptions, and well-structured schemas. All 10 tools follow verb_noun convention (list_, get_, set_, control_, actuate_, locate_, send_, query_). Descriptions are detailed (150-300 chars typical) and include WHEN to use each tool and dependencies. Input schemas are complete with types, enums, and constraints. However, output schemas are not documented, LLMs cannot predict response structure. Error handling guidance is minimal. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels.
Open the front trunk (frunk) or toggle the rear trunk/liftgate. Auto-wakes the car if asleep. Front trunk can only be opened remotely (not closed). Rear trunk toggles: open if closed, close if open. For door locks, use set_lock_state instead.
Control vehicle charging: start/stop a charge session, set the charge limit percentage, or open/close the charge port door. Auto-wakes the car if asleep. The car must be plugged in for start/stop to work. set_limit only sets the target — it does not start charging. To check current charge state first, use get_vehicle_status with section='charge'.
Start, stop, or set temperature for the vehicle HVAC system. Auto-wakes the car if asleep. All temperatures are in Fahrenheit. The set_temp action also starts climate automatically. Typical range: 60-85°F. For seat heaters, use query_vehicle_field to read current level (writing seat heaters is not supported in v1).
Vent (crack open slightly) or close all windows simultaneously. Auto-wakes the car if asleep. Closing may fail on some vehicles if a proximity check cannot be satisfied — the error will explain why. For door locks, use set_lock_state. For trunk, use actuate_trunk.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Breaks downstream tool chaining and forces agents to guess at available data.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. set_lock_state, control_charging, actuate_trunk are WRITE operations but lack destructiveHint. Agents cannot reason about safety/retry semantics.
Error handling lacks recovery guidance. No tool description explains what to do if a command fails (e.g., 'vehicle not found' → call list_vehicles). Agents receive raw errors with no next-step guidance.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | <=2025-11-25 | v2 |
Read current vehicle state including battery, charging, climate, location, and lock status. Use this for general status questions. For a single niche field (tire pressure, seat heater level), use query_vehicle_field instead. Returns a compact ~15-field summary (~400 tokens) by default. Use detail='full' for the raw Fleet API response (large). Use section to limit data fetched. Data may be stale if the car is asleep — set fresh=true to wake it first (~15s).
List all Tesla vehicles on the account with display name, VIN, and state (online, asleep, offline). Use this first when the user has multiple vehicles to get the VIN for other tools. For detailed status of a single vehicle, use get_vehicle_status instead.
Make the vehicle flash its lights, honk its horn, or both to help locate it in a parking lot. Auto-wakes the car if asleep. For the vehicle's GPS coordinates, use get_vehicle_status with section='location' instead.
Read a single field from the vehicle data by dotted path. Use for niche values not included in the get_vehicle_status summary. For general status (battery, climate, location, lock state), use get_vehicle_status instead — it's more efficient. This tool is for the long tail: tire pressures, individual seat heater levels, charge energy added, etc. Read-only. Common paths: climate_state.seat_heater_left, vehicle_state.tpms_pressure_fl, charge_state.charge_energy_added, vehicle_state.tpms_pressure_fr
Send a navigation destination to the vehicle's navigation system. Auto-wakes the car if asleep.
Lock or unlock the vehicle doors. Auto-wakes the car if asleep.
send_navigation lacks destination validation guidance. Description does not specify coordinate range, precision, or error cases (e.g., invalid lat/lon). Agents may pass out-of-range values.
query_vehicle_field requires knowledge of Tesla Fleet API field paths. Description mentions 'dotted path' but does not explain how to discover available paths beyond 'use detail=full'. Agents may guess invalid paths.