Control Your Tesla
app.vercel.control-your-tesla/control-your-teslacontrol-your-tesla.vercel.appstreamable-httpv1.0.0Scanned
AI for your car: check charge, start climate, lock/unlock, open trunk via Tesla Fleet API. OAuth.
34 tools: 4 can delete or cancel things, 3 do something that can't be undone, 13 change things and 14 only read.
- Reads private data · 1
- Reads text others write · 2
- Can send data out · 1
- No findings
Anlyon alternative
20 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
34 tools
Deletes or cancels 4Claude Code: deny
actuate_trunkOpens or closes the rear trunk or front trunk (frunk).No findings
Why it is in this group
- The description's first verb is "open": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Opens or closes the rear trunk or front trunk (frunk). Opening requires confirm=true when confirmations are on.
Annotations the server declares
- title: Open trunk or frunk
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
cancel_subscriptionCancels the owner's subscription at the end of the current period.No findings
Why it is in this group
- The name "cancel_subscription" says "cancel": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Cancels the owner's subscription at the end of the current period. Access stays until then.
Annotations the server declares
- title: Cancel subscription
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
remote_startRemote-starts the vehicle.No findings
Why it is in this group
- The name "remote_start" says "start": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Remote-starts the vehicle. Requires confirm=true when confirmations are on. Blocked in read-only mode.
Annotations the server declares
- title: Remote start
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
unlock_vehicleUnlocks the vehicle.No findings
Why it is in this group
- The name "unlock_vehicle" says "unlock": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Unlocks the vehicle. Requires confirm=true unless the owner disabled confirmations. Blocked in read-only mode.
Annotations the server declares
- title: Unlock vehicle
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
Can't be undone 3Claude Code: ask
set_chargeStarts or stops charging, or sets the charge limit percent.No findings
Why it is in this group
- The name "set_charge" says "set": a word for a change.
- The name "set_charge" also says "charge": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it Starts or stops charging, or sets the charge limit percent.
Annotations the server declares
- title: Set charge
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
set_charge_limitSets the charge limit percent (50–100).No findings
Why it is in this group
- The name "set_charge_limit" says "set": a word for a change.
- The name "set_charge_limit" also says "charge": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it Sets the charge limit percent (50–100). Out-of-range values return invalid_arguments.
Annotations the server declares
- title: Set charge limit
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Changes things 13Claude Code: ask
create_checkoutCreates a hosted Stripe Checkout session for a plan.No findings
Why it is in this group
- The name "create_checkout" says "create": a word for a change.
Description, as the server wrote it Creates a hosted Stripe Checkout session for a plan. Interval defaults to year (7-day trial). Returns the URL for the owner to open.
Annotations the server declares
- title: Create checkout
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
flash_lightsFlashes the headlights.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Flashes the headlights. The vehicle must be in park.
Annotations the server declares
- title: Flash lights
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
honk_hornHonks the horn.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Honks the horn. The vehicle must be in park.
Annotations the server declares
- title: Honk horn
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
lock_vehicleLocks the vehicle.No findings
Why it is in this group
- The name "lock_vehicle" says "lock": a word for a change.
Description, as the server wrote it Locks the vehicle.
Annotations the server declares
- title: Lock vehicle
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
set_climateStarts or stops cabin climate / preconditioning.No findings
Why it is in this group
- The name "set_climate" says "set": a word for a change.
Description, as the server wrote it Starts or stops cabin climate / preconditioning.
Annotations the server declares
- title: Set climate
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
set_scheduled_departureEnables or disables scheduled departure (minutes past midnight).No findings
Why it is in this group
- The name "set_scheduled_departure" says "set": a word for a change.
Description, as the server wrote it Enables or disables scheduled departure (minutes past midnight). Optionally keeps preconditioning on.
Annotations the server declares
- title: Set scheduled departure
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
set_seat_heaterSets a seat heater level (0-3).No findings
Why it is in this group
- The name "set_seat_heater" says "set": a word for a change.
Description, as the server wrote it Sets a seat heater level (0-3). Climate on usually works better.
Annotations the server declares
- title: Set seat heater
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
set_sentry_modeTurns Sentry Mode on or off.No findings
Why it is in this group
- The name "set_sentry_mode" says "set": a word for a change.
Description, as the server wrote it Turns Sentry Mode on or off.
Annotations the server declares
- title: Set Sentry Mode
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
start_accountCreates or attaches an account for this setup session.No findings
Why it is in this group
- The name "start_account" says "start": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Start account
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
start_tesla_oauthStarts Tesla sign-in and returns the hosted OAuth start URL (which redirects to Tesla's documented authorize endpoint) plus owner-facing instruction text.No findings
Why it is in this group
- The name "start_tesla_oauth" says "start": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Start Tesla sign-in
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
subscribeReturns a single hosted Stripe Checkout URL or one-tap pay page for the owner to open.No findings
Why it is in this group
- The name "subscribe" says "subscribe": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Subscribe
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
verify_vehicleReports whether the connected car is reachable from cached state and fleet_status (asleep, offline, or unsupported).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Reports whether the connected car is reachable from cached state and fleet_status (asleep, offline, or unsupported). Does not count as a wake.
Annotations the server declares
- title: Verify vehicle
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
wake_vehicleWakes the vehicle.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Wakes the vehicle. Cached reads do not need a wake. Wakes count against the monthly allowance.
Annotations the server declares
- title: Wake vehicle
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Only reads 14Show 14 read-only tools
get_battery_and_rangeReturns battery percent, rated range, charge limit, and charging state.No findings
Why it is in this group
- The name "get_battery_and_range" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get battery and range
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_charging_historyReturns recent charging sessions (home, Supercharger, destination) with kWh and cost when Tesla reports it.No findings
Why it is in this group
- The name "get_charging_history" says "get": a word for reading.
Description, as the server wrote it Returns recent charging sessions (home, Supercharger, destination) with kWh and cost when Tesla reports it. Does not wake the car.
Annotations the server declares
- title: Get charging history
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_charging_statusReturns charging status: percent, limit, plugged in, power, and minutes to full.No findings
Why it is in this group
- The name "get_charging_status" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get charging status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_customer_portalReturns a Stripe Customer Portal URL where the owner can cancel, update the card, or download invoices.Reads text others writeNo findings
Why it is in this group
- The name "get_customer_portal" says "get": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "return" and "url": it reads web pages, which anyone can write.
Description, as the server wrote it Returns a Stripe Customer Portal URL where the owner can cancel, update the card, or download invoices.
Annotations the server declares
- title: Get customer portal
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_energy_usageReturns Powerwall / solar live status and calendar history when the owner has an energy site.Reads private dataNo findings
Why it is in this group
- The name "get_energy_usage" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "return" and "calendar": it reads calendars.
Description, as the server wrote it Returns Powerwall / solar live status and calendar history when the owner has an energy site. Does not wake the car.
Annotations the server declares
- title: Get energy usage
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_locationReturns latitude/longitude plus a human place name when one can be resolved.No findings
Why it is in this group
- The name "get_location" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get location
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_pricingLists Standard and Plus monthly and yearly prices, allowances, trial length, and checkout URLs.No findings
Why it is in this group
- The name "get_pricing" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get pricing
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_setup_statusReturns 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.Reads text others writeNo findings
Why it is in this group
- The name "get_setup_status" says "get": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "return" and "url": it reads web pages, which anyone can write.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get setup status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_subscription_statusReturns trial/active/none billing state, remaining usage, and whether vehicle tools are gated.No findings
Why it is in this group
- The name "get_subscription_status" says "get": a word for reading.
Description, as the server wrote it Returns trial/active/none billing state, remaining usage, and whether vehicle tools are gated.
Annotations the server declares
- title: Get subscription status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_vehicle_stateReturns vehicle state (charge, climate, lock, location) from a short cache, or a metered vehicle_data read on miss.No findings
Why it is in this group
- The name "get_vehicle_state" says "get": a word for reading.
Description, as the server wrote it Returns vehicle state (charge, climate, lock, location) from a short cache, or a metered vehicle_data read on miss. Does not wake the car.
Annotations the server declares
- title: Get vehicle state
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_vehicle_summaryReturns a vehicle snapshot: online/asleep, battery, range, lock, climate, sentry, and last location.No findings
Why it is in this group
- The name "get_vehicle_summary" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get vehicle summary
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_virtual_key_statusReports whether the virtual key is paired.No findings
Why it is in this group
- The name "get_virtual_key_status" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get virtual key status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_vehiclesLists vehicles linked to this account after Tesla OAuth and an active trial or subscription.No findings
Why it is in this group
- The name "list_vehicles" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List vehicles
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
nearest_superchargersReturns nearby Superchargers from the last cached location.No findings
Why it is in this group
- The description's first verb is "return": a word for reading.
Description, as the server wrote it Returns nearby Superchargers from the last cached location. Does not wake the car.
Annotations the server declares
- title: Nearest Superchargers
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
2 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 outbound tool breaks every one.
- Reads private data1
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write2
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out1
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__control-your-tesla__share_destination"
]
}
}Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
No check matched anything in these tool definitions. That is not a safety guarantee.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http control-your-tesla https://control-your-tesla.vercel.app/mcpclaude mcp add --transport http control-your-tesla https://control-your-tesla.vercel.app/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__control-your-tesla__get_setup_status",
"mcp__control-your-tesla__get_pricing",
"mcp__control-your-tesla__get_subscription_status",
"mcp__control-your-tesla__get_customer_portal",
"mcp__control-your-tesla__list_vehicles",
"mcp__control-your-tesla__get_vehicle_state",
"mcp__control-your-tesla__get_battery_and_range",
"mcp__control-your-tesla__nearest_superchargers",
"mcp__control-your-tesla__get_virtual_key_status",
"mcp__control-your-tesla__get_vehicle_summary",
"mcp__control-your-tesla__get_charging_status",
"mcp__control-your-tesla__get_charging_history",
"mcp__control-your-tesla__get_energy_usage",
"mcp__control-your-tesla__get_location"
],
"ask": [
"mcp__control-your-tesla__start_account",
"mcp__control-your-tesla__start_tesla_oauth",
"mcp__control-your-tesla__verify_vehicle",
"mcp__control-your-tesla__subscribe",
"mcp__control-your-tesla__create_checkout",
"mcp__control-your-tesla__lock_vehicle",
"mcp__control-your-tesla__set_climate",
"mcp__control-your-tesla__set_seat_heater",
"mcp__control-your-tesla__set_charge",
"mcp__control-your-tesla__honk_horn",
"mcp__control-your-tesla__flash_lights",
"mcp__control-your-tesla__wake_vehicle",
"mcp__control-your-tesla__share_destination",
"mcp__control-your-tesla__set_charge_limit",
"mcp__control-your-tesla__set_scheduled_departure",
"mcp__control-your-tesla__set_sentry_mode"
],
"deny": [
"mcp__control-your-tesla__cancel_subscription",
"mcp__control-your-tesla__unlock_vehicle",
"mcp__control-your-tesla__actuate_trunk",
"mcp__control-your-tesla__remote_start"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as control-your-tesla. Review it before you use it.
Capability tags behind 4 rules
- mcp__control-your-tesla__get_setup_status untrusted-input
- mcp__control-your-tesla__get_customer_portal untrusted-input
- mcp__control-your-tesla__get_energy_usage private-data
- mcp__control-your-tesla__share_destination outbound
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/app.vercel.control-your-tesla/control-your-tesla/verify?hash=0f402bf300a57744cf160f4d07ecb1011f81f3a0962aa8da2a6fa39e7cf26fd3" | jq -e '.changed == false'Pinned hash 0f402bf300a5, from Nov 5, 2026, 07:17 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/app.vercel.control-your-tesla/control-your-tesla/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/app.vercel.control-your-tesla/control-your-tesla)Source: MCP Registry. Synced Nov 5, 2026, 07:17 UTC.