You open Claude Desktop. You say: “Lock the Forester.”
Your assistant asks you to confirm. It calls BetterKey. BetterKey calls your car. You get back whether the car confirmed the command, or whether it was only accepted.
That’s AI Assistant.
What we’re shipping#
An open-source bridge that speaks the Model Context Protocol (MCP), the format a growing list of AI apps already know how to load tools from. Point Claude Desktop, Cursor, or any other MCP-capable host at it, authenticate with a BetterKey API key you mint yourself, and these tools show up in the assistant’s palette:
- list_vehicles — your connected cars.
- get_vehicle_capabilities — what BetterKey can and can’t do for a specific car right now, including a short list of known upstream quirks the assistant should respect.
- lock_vehicle, unlock_vehicle — the real thing. Marked destructive. Most hosts will ask you to confirm before invoking either. The response is “confirmed” when the car acknowledged, “unconfirmed” when BetterKey accepted the command but the ack never arrived.
- get_vehicle_location — latitude, longitude, and the OEM timestamp. Marked location-sensitive. We don’t log coordinates.
One default key, one set of tools, one Settings toggle to revoke it.
The permission model is the feature#
AI tools fail two ways. One is being too narrow to be useful. The other is being too eager to be safe. We care more about the second.
Here’s the shape:
- The AI never touches your automaker credentials. The bridge doesn’t hold them, read them, or know about them. Every call routes through BetterKey’s servers, which do the actual talking to your car.
- The AI only touches your vehicles. Every call is bound to your BetterKey account by the API key you minted, and the ownership check runs on every tool invocation.
- Destructive tools are marked destructive. BetterKey marks lock and unlock as destructive and asks compatible hosts to prompt before invoking them. The tool description tells the assistant to expect that confirmation. But confirmation lives in the host’s UI, not in the server. Every call is gated by BetterKey’s own checks: your API key, its
vehicle.commandscope, your active subscription, and the vehicle ownership check. - Revoking is one tap, no stale cache. Delete the key in Settings and the next tool call fails as unauthorized. Nothing has to time out, nothing has to be reset on the assistant’s side.
- An active BetterKey subscription is still required. The AI gets exactly the same account-level checks the app does. If your subscription lapses, the commands stop regardless of what key the assistant holds.
That’s not a security story we bolt on. It’s the model.
Honesty about what the car tells us#
A good tool reports uncertainty. A lock command’s response comes back as “confirmed” when the automaker acknowledged it and “unconfirmed” when BetterKey accepted the command but the car’s ack never arrived. The capability tool reports what a specific car supports, including known upstream quirks (the lock-status webhook is unreliable; some providers don’t support the live engine-run-state endpoint), so the assistant doesn’t claim current state the car hasn’t actually confirmed. Location is the car’s own last report, with its OEM timestamp attached so the assistant can tell how recent it is. Reporting cadence and freshness depend on the automaker.
Agents are already prone to over-report. We’d rather an assistant say “the lock command was accepted but the car hasn’t acknowledged yet” than “your car is locked” with no caveat.
What you’ll need to set it up#
AI Assistant is for people who are comfortable editing a JSON config file. You’ll need:
- A machine that runs Node 20 or newer.
- An AI host that speaks MCP (Claude Desktop and Cursor both work out of the box).
- About ten minutes.
Mint a key in the BetterKey app, drop four lines of JSON into your MCP host’s config pointing at npx -y betterkey-mcp, and restart. No clone or build step. The open-source bridge is published to npm. The project README has the exact JSON for Claude Desktop.
Why we’re doing this#
Smart cars have lived behind proprietary apps for a decade. The one your automaker ships, maybe one your home assistant platform ships, maybe one your insurance company would like to ship. Each one asks you for a login, each one builds its own slightly different window into the same vehicle, and none of them can be composed with the tools you actually use.
AI assistants finally give that window a shape worth composing. Not because the assistant is smarter than the dashboard, but because it’s the interface you’ve already been reaching for.
BetterKey’s job is to make that interface safe. We’ve already done the hard part of per-user vehicle authentication, cross-automaker reconciliation, and freshness truth-telling. Shipping an MCP bridge means the AI you’ve already picked gets to use that work.
You hold the key. The AI does what you let it. We stay in the middle.
It ships today. The MCP server is open source, published to npm, and running against the same BetterKey account you already use. Your car answers to you, not to the assistant.


