Skip to content

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.

Tools: 4 delete, 3 irreversible, 13 write, 14 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
  • share_destinationSends a destination to the car from address text and/or lat/lon.Can send data outNo findings

    Why it is in this group

    • The description's first verb is "send": a word for sending, and what is sent cannot be taken back.

    What it can reach

    • outboundThe description's first verb is "send": it sends or publishes something to other people.
    Description, as the server wrote it
    Sends a destination to the car from address text and/or lat/lon. Returns the command confirmation and cached vehicle state.

    Annotations the server declares

    • title: Share destination
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • 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.
deny to break every path
{
  "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/mcp
claude mcp add --transport http control-your-tesla https://control-your-tesla.vercel.app/mcp

Run 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.

.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.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for app.vercel.control-your-tesla/control-your-tesla
[![anlyon.dev](https://anlyon.dev/badge/app.vercel.control-your-tesla/control-your-tesla.svg)](https://anlyon.dev/servers/app.vercel.control-your-tesla/control-your-tesla)

Source: MCP Registry. Synced Nov 5, 2026, 07:17 UTC.