AI for your car: check charge, start climate, lock/unlock, open trunk via Tesla Fleet API. OAuth.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Opens or closes the rear trunk or front trunk (frunk). Opening requires confirm=true when confirmations are on.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http control-your-tesla https://control-your-tesla.vercel.app/mcp
Opens or closes the rear trunk or front trunk (frunk). Opening requires confirm=true when confirmations are on.
| Argument | Type | Description |
|---|---|---|
| vin | string | |
| confirm | boolean | |
| which_trunk* | string |
{
"type": "object",
"required": [
"which_trunk"
],
"properties": {
"vin": {
"type": "string"
},
"confirm": {
"type": "boolean"
},
"which_trunk": {
"enum": [
"rear",
"front"
],
"type": "string"
}
}
}Cancels the owner's subscription at the end of the current period. Access stays until then.
No arguments.
{
"type": "object",
"properties": {}
}Creates a hosted Stripe Checkout session for a plan. Interval defaults to year (7-day trial). Returns the URL for the owner to open.
| Argument | Type | Description |
|---|---|---|
| plan | string | |
| interval | string |
{
"type": "object",
"properties": {
"plan": {
"enum": [
"standard",
"plus"
],
"type": "string"
},
"interval": {
"enum": [
"month",
"year"
],
"type": "string"
}
}
}Flashes the headlights. The vehicle must be in park.
| Argument | Type | Description |
|---|---|---|
| vin | string |
{
"type": "object",
"properties": {
"vin": {
"type": "string"
}
}
}Returns battery percent, rated range, charge limit, and charging state. Uses the short cache; a miss is a metered vehicle_data read. Does not wake the car.
| Argument | Type | Description |
|---|---|---|
| vin | string |
{
"type": "object",
"properties": {
"vin": {
"type": "string"
}
}
}Returns recent charging sessions (home, Supercharger, destination) with kWh and cost when Tesla reports it. Does not wake the car.
| Argument | Type | Description |
|---|---|---|
| end | string | ISO end time |
| vin | string | |
| page | number | |
| start | string | ISO start time |
| page_size | number | |
| home_rate_usd_per_kwh | number | Optional $/kWh to estimate home session cost. Not stored. |
{
"type": "object",
"properties": {
"end": {
"type": "string",
"description": "ISO end time"
},
"vin": {
"type": "string"
},
"page": {
"type": "number"
},
"start": {
"type": "string",
"description": "ISO start time"
},
"page_size": {
"type": "number"
},
"home_rate_usd_per_kwh": {
"type": "number",
"description": "Optional $/kWh to estimate home session cost. Not stored."
}
}
}Returns charging status: percent, limit, plugged in, power, and minutes to full. Uses a short cache; a miss is a metered vehicle_data read. Does not wake the car.
| Argument | Type | Description |
|---|---|---|
| vin | string |
{
"type": "object",
"properties": {
"vin": {
"type": "string"
}
}
}Returns a Stripe Customer Portal URL where the owner can cancel, update the card, or download invoices.
No arguments.
{
"type": "object",
"properties": {}
}Returns Powerwall / solar live status and calendar history when the owner has an energy site. Does not wake the car.
| Argument | Type | Description |
|---|---|---|
| end | string | |
| start | string | |
| period | string |
{
"type": "object",
"properties": {
"end": {
"type": "string"
},
"start": {
"type": "string"
},
"period": {
"enum": [
"day",
"week",
"month",
"year"
],
"type": "string"
}
}
}Returns latitude/longitude plus a human place name when one can be resolved. Uses a short cache; a miss is a metered vehicle_data read. Does not wake the car.
| Argument | Type | Description |
|---|---|---|
| vin | string |
{
"type": "object",
"properties": {
"vin": {
"type": "string"
}
}
}Lists Standard and Plus monthly and yearly prices, allowances, trial length, and checkout URLs. Yearly includes a 7-day trial. Payment happens on the hosted Stripe page the owner opens.
No arguments.
{
"type": "object",
"properties": {}
}Returns the current onboarding step, completed items, blockers, the next tool name, owner-facing instruction text, the exact link to open, and the /connect fallback URL.
No arguments.
{
"type": "object",
"properties": {}
}Returns trial/active/none billing state, remaining usage, and whether vehicle tools are gated.
No arguments.
{
"type": "object",
"properties": {}
}Returns vehicle state (charge, climate, lock, location) from a short cache, or a metered vehicle_data read on miss. Does not wake the car.
| Argument | Type | Description |
|---|---|---|
| vin | string |
{
"type": "object",
"properties": {
"vin": {
"type": "string"
}
}
}Returns a vehicle snapshot: online/asleep, battery, range, lock, climate, sentry, and last location. Uses a short cache; a miss is a metered vehicle_data read. Does not wake the car.
| Argument | Type | Description |
|---|---|---|
| vin | string |
{
"type": "object",
"properties": {
"vin": {
"type": "string"
}
}
}Reports whether the virtual key is paired. If not, returns the official tesla.com/_ak pairing link and owner-facing pairing steps. Approving Third-Party Apps is not the same as pairing the key.
| Argument | Type | Description |
|---|---|---|
| vin | string | |
| simulate | boolean |
{
"type": "object",
"properties": {
"vin": {
"type": "string"
},
"simulate": {
"type": "boolean"
}
}
}Honks the horn. The vehicle must be in park.
| Argument | Type | Description |
|---|---|---|
| vin | string |
{
"type": "object",
"properties": {
"vin": {
"type": "string"
}
}
}Lists vehicles linked to this account after Tesla OAuth and an active trial or subscription. A setup_incomplete error means onboarding is not finished; get_setup_status reports the remaining step.
No arguments.
{
"type": "object",
"properties": {}
}Locks the vehicle.
| Argument | Type | Description |
|---|---|---|
| vin | string |
{
"type": "object",
"properties": {
"vin": {
"type": "string"
}
}
}Returns nearby Superchargers from the last cached location. Does not wake the car.
| Argument | Type | Description |
|---|---|---|
| vin | string | |
| limit | number |
{
"type": "object",
"properties": {
"vin": {
"type": "string"
},
"limit": {
"type": "number"
}
}
}Remote-starts the vehicle. Requires confirm=true when confirmations are on. Blocked in read-only mode.
| Argument | Type | Description |
|---|---|---|
| vin | string | |
| confirm | boolean |
{
"type": "object",
"properties": {
"vin": {
"type": "string"
},
"confirm": {
"type": "boolean"
}
}
}Starts or stops charging, or sets the charge limit percent.
| Argument | Type | Description |
|---|---|---|
| vin | string | |
| action* | string | |
| percent | number |
{
"type": "object",
"required": [
"action"
],
"properties": {
"vin": {
"type": "string"
},
"action": {
"enum": [
"start",
"stop",
"limit"
],
"type": "string"
},
"percent": {
"type": "number",
"maximum": 100,
"minimum": 50
}
}
}Sets the charge limit percent (50–100). Out-of-range values return invalid_arguments.
| Argument | Type | Description |
|---|---|---|
| vin | string | |
| percent* | number |
{
"type": "object",
"required": [
"percent"
],
"properties": {
"vin": {
"type": "string"
},
"percent": {
"type": "number",
"maximum": 100,
"minimum": 50
}
}
}Starts or stops cabin climate / preconditioning.
| Argument | Type | Description |
|---|---|---|
| on* | boolean | |
| vin | string | |
| driver_temp_c | number | |
| passenger_temp_c | number |
{
"type": "object",
"required": [
"on"
],
"properties": {
"on": {
"type": "boolean"
},
"vin": {
"type": "string"
},
"driver_temp_c": {
"type": "number"
},
"passenger_temp_c": {
"type": "number"
}
}
}Enables or disables scheduled departure (minutes past midnight). Optionally keeps preconditioning on.
| Argument | Type | Description |
|---|---|---|
| vin | string | |
| enable* | boolean | |
| departure_time | number | Minutes after midnight |
| preconditioning_enabled | boolean |
{
"type": "object",
"required": [
"enable"
],
"properties": {
"vin": {
"type": "string"
},
"enable": {
"type": "boolean"
},
"departure_time": {
"type": "number",
"description": "Minutes after midnight"
},
"preconditioning_enabled": {
"type": "boolean"
}
}
}Sets a seat heater level (0-3). Climate on usually works better.
| Argument | Type | Description |
|---|---|---|
| vin | string | |
| level* | number | |
| seat_position* | number | 0 driver, 1 passenger, 2 rear left, 4 rear center, 5 rear right |
{
"type": "object",
"required": [
"seat_position",
"level"
],
"properties": {
"vin": {
"type": "string"
},
"level": {
"type": "number",
"maximum": 3,
"minimum": 0
},
"seat_position": {
"type": "number",
"description": "0 driver, 1 passenger, 2 rear left, 4 rear center, 5 rear right"
}
}
}Turns Sentry Mode on or off.
| Argument | Type | Description |
|---|---|---|
| on* | boolean | |
| vin | string |
{
"type": "object",
"required": [
"on"
],
"properties": {
"on": {
"type": "boolean"
},
"vin": {
"type": "string"
}
}
}Sends a destination to the car from address text and/or lat/lon. Returns the command confirmation and cached vehicle state.
| Argument | Type | Description |
|---|---|---|
| lat | number | |
| lon | number | |
| vin | string | |
| address | string |
{
"type": "object",
"properties": {
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"vin": {
"type": "string"
},
"address": {
"type": "string"
}
}
}Creates or attaches an account for this setup session. Accepts the owner's email. Returns whether a sign-in email was sent and the /connect fallback URL.
| Argument | Type | Description |
|---|---|---|
| string | Owner email | |
| simulate | boolean | On a demo account, finish this step without the human. |
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Owner email"
},
"simulate": {
"type": "boolean",
"description": "On a demo account, finish this step without the human."
}
}
}Starts Tesla sign-in and returns the hosted OAuth start URL (which redirects to Tesla's documented authorize endpoint) plus owner-facing instruction text. Later get_setup_status calls report denied, expired, or missing-scope failures.
| Argument | Type | Description |
|---|---|---|
| simulate | boolean | On a demo account, mark Tesla access as connected. |
{
"type": "object",
"properties": {
"simulate": {
"type": "boolean",
"description": "On a demo account, mark Tesla access as connected."
}
}
}Returns a single hosted Stripe Checkout URL or one-tap pay page for the owner to open. Yearly starts a 7-day trial (card required). Monthly charges on the first successful checkout. This tool does not collect or charge a card in the chat.
| Argument | Type | Description |
|---|---|---|
| plan | string | |
| interval | string |
{
"type": "object",
"properties": {
"plan": {
"enum": [
"standard",
"plus"
],
"type": "string"
},
"interval": {
"enum": [
"month",
"year"
],
"type": "string"
}
}
}Unlocks the vehicle. Requires confirm=true unless the owner disabled confirmations. Blocked in read-only mode.
| Argument | Type | Description |
|---|---|---|
| vin | string | |
| confirm | boolean | Must be true when confirmations are required. |
{
"type": "object",
"properties": {
"vin": {
"type": "string"
},
"confirm": {
"type": "boolean",
"description": "Must be true when confirmations are required."
}
}
}Reports whether the connected car is reachable from cached state and fleet_status (asleep, offline, or unsupported). Does not count as a wake.
| Argument | Type | Description |
|---|---|---|
| vin | string | |
| simulate | boolean | On a demo account, mark the car online. |
{
"type": "object",
"properties": {
"vin": {
"type": "string"
},
"simulate": {
"type": "boolean",
"description": "On a demo account, mark the car online."
}
}
}Wakes the vehicle. Cached reads do not need a wake. Wakes count against the monthly allowance.
| Argument | Type | Description |
|---|---|---|
| vin | string |
{
"type": "object",
"properties": {
"vin": {
"type": "string"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 5, 2026.