Control Your Tesla
Server Details
AI for your car: check charge, start climate, lock/unlock, open trunk via Tesla Fleet API. OAuth.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-03-26
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 34 tools
Several tools have overlapping boundaries: create_checkout and subscribe both return a hosted Stripe Checkout URL, set_charge can also set the charge limit (duplicating set_charge_limit), and get_vehicle_state, get_vehicle_summary, get_battery_and_range, get_charging_status, and verify_vehicle all return cached vehicle snapshots with subtly different scopes. An agent must read carefully to pick the right read tool for a simple 'how is my car' question.
Nearly all tools follow a snake_case verb_noun pattern (get_*, set_*, start_*, lock_vehicle, unlock_vehicle, wake_vehicle, cancel_subscription). Minor deviations exist: bare 'subscribe', the noun-phrase 'nearest_superchargers', and the compound 'remote_start'.
34 tools is heavy for this surface; the domain spans vehicle control, billing, onboarding, and energy, but that breadth still produces many near-duplicate read and checkout tools rather than a tight set. Consolidating the five vehicle-state read tools and the two checkout tools would materially shrink it.
Coverage is strong: locks, trunk, climate, charging, sentry, seat heaters, horn, lights, wake, remote start, scheduled departure, destination sharing, plus a full billing and onboarding lifecycle and a cached energy read. Minor gaps remain (no media/window/software-update controls, no per-vehicle odometer or service data), but core workflows are covered.
Available Tools
34 toolsactuate_trunkOpen trunk or frunkBDestructiveInspect
Opens or closes the rear trunk or front trunk (frunk). Opening requires confirm=true when confirmations are on.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No | ||
| confirm | No | ||
| which_trunk | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose destructiveHint=true and non-idempotence, so the safety bar is lower. The description adds genuinely useful context that a confirmation gate exists, but says nothing about vehicle-awake requirements, latency, or what a partially-open/close state returns, leaving meaningful behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action first and the constraint second; nothing is padded. It is terse to the point that the vin and close-path semantics are omitted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter physical-actuation tool with no output schema, the description covers the core action and the confirm gate but leaves gaps around targeting (vin), whether closing also requires confirmation, and prerequisites such as waking the vehicle.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries weight. It explains the confirm parameter's gating role (for opening) and implicitly defines which_trunk values (rear/front), but the vin parameter is never mentioned and it does not state whether confirm is required for closing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete action and resource: opening/closing the rear trunk or front trunk (frunk), and clarifies the 'frunk' term. It is easily separable from all siblings (lock_vehicle, flash_lights, set_climate), none of which touch the trunk. No explicit sibling differentiation is needed here, so a 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is a conditional prerequisite: setting confirm=true when confirmations are enabled. There is no statement of when to prefer this over related actions (e.g., unlock_vehicle first, or wake_vehicle prerequisites), so selection context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_subscriptionCancel subscriptionADestructiveInspect
Cancels the owner's subscription at the end of the current period. Access stays until then.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already flag destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds a material behavioral fact beyond those annotations: cancellation is deferred to period end and access is retained until then, which changes how an agent should communicate the outcome. It does not say whether the cancellation is reversible or whether the call errors if no active subscription exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core effect front-loaded and the consequence second. Every clause earns its place and nothing is redundant with the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter destructive mutation with no output schema, the description covers what happens and when it takes effect, which is the critical information. Minor gaps remain around reversibility and the post-call state an agent should report, but nothing essential for invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline applies. No parameter noise is introduced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Cancels the owner's subscription") plus the effective timing ("at the end of the current period"). An agent can distinguish it from the sibling subscribe tool purely by the verb, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb rather than spelled out; there is no guidance on checking get_subscription_status first or on how to resume via subscribe. The one contextual hint is that access persists until period end, which tells the agent the effect is not immediate but does not say when the tool should or should not be called.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_checkoutCreate checkoutAInspect
Creates a hosted Stripe Checkout session for a plan. Interval defaults to year (7-day trial). Returns the URL for the owner to open.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | ||
| interval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, non-idempotent, closed-world operation. The description adds real behavioral context on top: that the session is hosted by Stripe, that the interval defaults to year, that a 7-day trial applies, and that the caller receives a URL to open rather than a completed subscription.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no filler, with the core action stated first and the return value last. Every clause carries information the agent cannot get from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the mutation's effect and its return value despite there being no output schema, which is the most important gap closed. It is still thin on prerequisites (must an account exist first?), on whether repeated calls create duplicate sessions, and on what the owner does with the URL, which matters for a creation tool that is explicitly not idempotent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and both parameters are enums, so the schema only lists values. The description compensates partially by explaining the interval default ('year') and the trial period, but it says nothing about what 'standard' versus 'plus' plans mean or whether the selected interval changes trial eligibility.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Creates a hosted Stripe Checkout session for a plan'), which is far more precise than the tool name alone. It does not explicitly distinguish itself from sibling tools like subscribe or start_account, so an agent must infer the boundary, but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: this is the tool that produces a checkout URL so an owner can complete a purchase. There is no explicit when-to-use or when-not guidance, and the closely related sibling 'subscribe' is never referenced, leaving the agent to guess which entry point to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flash_lightsFlash lightsBInspect
Flashes the headlights. The vehicle must be in park.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, non-idempotent actuation, so the safety profile is covered. The description adds the park-gear precondition, which is real behavioral context not present in annotations. It does not say whether the flash is momentary or sustained, how long it lasts, or what happens if the vehicle is not in park.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action first and the precondition second; nothing superfluous and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter actuation tool this is nearly adequate, and annotations plus the stated precondition carry most of the load. The unresolved gap is vehicle targeting: vin is optional and undocumented, leaving ambiguous which vehicle is flashed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter, vin, is not mentioned anywhere in the description. Notably, vin is not required (0 required parameters), so the description should explain what happens when it is omitted, but it does not. The description adds no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ("Flashes the headlights"), which is unambiguous and clearly separable from read-oriented siblings like get_vehicle_state. It does not explicitly name honk_horn, the closest actuation sibling, but the resource distinction (lights vs. horn) is self-evident from the wording.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the precondition "The vehicle must be in park," which is genuinely useful guidance for when a call will succeed. However, no alternative is named (e.g., honk_horn for audible locating), and there is no guidance on when to prefer one over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_battery_and_rangeGet battery and rangeARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses three operational traits an agent could not infer: results come from a short cache, a cache miss triggers a metered (billable) vehicle_data read, and the call does not wake a sleeping car. Those are exactly the cost and side-effect facts that drive tool selection here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what is returned, then the caching behavior, then the no-wake guarantee. No filler and nothing repeated from the annotations or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields, and it covers the cost/side-effect profile that annotations do not. The one gap is input handling — it says nothing about the required VIN or default-vehicle behavior for a one-parameter call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'vin' has zero schema description coverage and is not optional-annotated, yet the description never mentions it — not what a VIN looks like, not whether it can be omitted for a default vehicle, not whether failure occurs without one. With one undocumented parameter, the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact returned fields (battery percent, rated range, charge limit, charging state), so the agent knows precisely what this retrieves. It implicitly separates itself from a full vehicle_data fetch by describing the cached fast path, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The cost framing ('short cache', 'metered vehicle_data read') implies this is the cheap way to check battery, which is useful guidance against get_vehicle_state. However, it never states when to prefer this versus get_charging_status or get_vehicle_state, nor any precondition such as the vehicle needing to be online.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_charging_historyGet charging historyARead-onlyIdempotentInspect
Returns recent charging sessions (home, Supercharger, destination) with kWh and cost when Tesla reports it. Does not wake the car.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ISO end time | |
| vin | No | ||
| page | No | ||
| start | No | ISO start time | |
| page_size | No | ||
| home_rate_usd_per_kwh | No | Optional $/kWh to estimate home session cost. Not stored. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, and closed-world behavior, so the description is not obligated to restate safety. It still adds real value beyond them: the no-wake behavior (a meaningful trait in a fleet where many siblings require waking the car) and the caveat that cost is only present 'when Tesla reports it', which sets expectations about missing fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no redundancy, with the returned data front-loaded and the no-wake guarantee as a secondary clause. Every phrase carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, six parameters at 50% coverage, and undefined pagination, the description leaves the agent guessing about result shape, default time window for 'recent', and page/page_size semantics. It covers purpose and the key behavioral caveat but is not complete for a six-parameter list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Six parameters exist and schema coverage is only 50%; start, end, and home_rate_usd_per_kwh are documented in the schema, but vin, page, and page_size are undocumented in both places. The description does not compensate — it says nothing about time-range filtering, pagination behavior, or how home_rate_usd_per_kwh triggers a cost estimate that isn't stored.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb and resource ('Returns recent charging sessions') and enumerates the session types (home, Supercharger, destination) plus the payload (kWh, cost). This clearly separates it from the sibling get_charging_status, which reads current state rather than history, although it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Does not wake the car' implicitly tells the agent this is safe to call on an idle/asleep vehicle and needs no wake_vehicle preamble. However, there is no explicit statement of when to prefer this over get_charging_status or get_energy_usage, and no mention of default time window or required identifiers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_charging_statusGet charging statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavioral facts: a short cache layer and the cost model ('a miss is a metered vehicle_data read'), plus the guarantee that it will not wake the vehicle — all of which affect how an agent should budget and sequence calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the returned fields and immediately followed by the two operational caveats (cache/cost, no-wake). No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly enumerates the returned fields, and it discloses the caching and metering behavior that matters for a read tool. The one gap is the undocumented vin parameter, which is the only element an agent could get wrong when calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes a single parameter, vin, whose schema description coverage is 0%, and the description never mentions it at all — no indication of format, whether it is optional (zero required parameters), or what happens when it is omitted. With a 0% coverage schema, the description is expected to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns charging status') and then enumerates the exact fields returned: percent, limit, plugged in, power, minutes to full. That enumeration separates it cleanly from siblings like get_battery_and_range and get_charging_history, which cover related but distinct data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The lines 'Uses a short cache' and 'Does not wake the car' imply this is the cheap, safe way to poll charging state on a sleeping vehicle, which is useful routing context. However, no alternative is named explicitly (e.g., 'use get_vehicle_state for full state' or 'call wake_vehicle only if...'), so the when-to-use guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customer_portalGet customer portalARead-onlyIdempotentInspect
Returns a Stripe Customer Portal URL where the owner can cancel, update the card, or download invoices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description usefully adds what the returned URL lets the owner do, but omits notable behavior for a portal link, such as whether it creates a session or whether the URL expires.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb and returned artifact lead, with purpose following as supporting detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter read tool with no output schema, the description adequately covers what comes back and why. The remaining gap is preconditions (does a Stripe subscription/customer need to exist, and what happens if not?) which an agent would need before a failed call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema baseline of 4 applies. There is nothing for the description to disambiguate, and it correctly implies the portal is derived from the authenticated caller's account.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Returns a Stripe Customer Portal URL") and adds what the URL is for: cancel, update card, download invoices. That implicitly distinguishes it from siblings like cancel_subscription and subscribe, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the described capabilities: an agent can infer it's for self-service billing management. There is no explicit when-to-use statement, no exclusion (e.g. 'use cancel_subscription to cancel directly'), and no prerequisite such as requiring an existing Stripe customer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_energy_usageGet energy usageARead-onlyIdempotentInspect
Returns Powerwall / solar live status and calendar history when the owner has an energy site. Does not wake the car.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| period | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds genuinely new behavioral context: it will not wake the car (a meaningful side-effect guarantee in a toolset full of wake_vehicle dependencies) and it only works when an energy site exists, implying an empty or error result otherwise. Return-format and pagination behavior are still unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the core capability is front-loaded and the caveat follows. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and three undocumented parameters, the description should do more: it gestures at 'live status' and 'history' but does not describe the shape of either, nor how the optional date/period filters select between them. The prerequisite disclosure is helpful, but an agent still cannot tell from the definition how to call it for a specific time window.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all three parameters (start, end, period), so the description carries the full burden and does not meet it. It never mentions the date-range semantics of start/end, their accepted formats, or how period interacts with them (e.g. whether period overrides the range), leaving the agent to guess at invocation details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Returns') and resource ('Powerwall / solar live status and calendar history'), which clearly separates this from the vehicle-centric siblings like get_battery_and_range and get_charging_history. The qualifier 'when the owner has an energy site' scopes the domain, though 'calendar history' remains slightly vague about what data is actually returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies a precondition ('when the owner has an energy site') and an implicit preference signal ('Does not wake the car'), which hints this is the low-impact way to check energy data versus waking the vehicle. However, it never names an alternative tool or states explicitly when to prefer this over get_battery_and_range or get_vehicle_state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_locationGet locationARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations by disclosing the caching layer, that a cache miss costs a metered vehicle_data read, and that the call does not wake the car — a critical side-effect fact given wake_vehicle exists as a sibling. Annotations already cover safety, so this is pure added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct information (return shape, cost model, side effects), with the valuable content front-loaded. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Behaviorally rich for a one-parameter read tool with no output schema, and the return shape is described adequately. The gap is the entirely undocumented vin parameter and the unspecified default when no vin is supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never mentions the vin parameter, so it adds no meaning about what vin selects or what happens when it is omitted (required count is 0). Low coverage means the description should have compensated and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource set: returns latitude/longitude plus a resolved place name. It implicitly separates itself from get_vehicle_state by scope (location only), though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The metered-read and cache notes give an agent cost-based guidance about when calling is cheap versus expensive, but there is no explicit when-to-use rule or named alternative (e.g. get_vehicle_state) for comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pricingGet pricingARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is fully covered by structured data. The description usefully adds that yearly plans carry a 7-day trial and that payment is handled off-tool on a hosted Stripe page, which clarifies that this call itself never charges anything — genuine added context, though no auth or freshness detail is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler, and the payload contents are front-loaded before the trial and payment caveats. Every clause carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters and no output schema, the description carries the burden of describing what comes back, and it does so concretely (tiers, cadence, allowances, trial, checkout URLs). Minor gaps remain around currency/locale coverage and whether prices are always current, but for a no-argument read this is close to sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies; there are no inputs whose meaning the description could obscure. The description correctly describes an output-only operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists ... prices, allowances, trial length, and checkout URLs') and enumerates the concrete fields returned. It is clearly distinguishable from siblings like create_checkout or subscribe, which act on the plan rather than describe it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mention of checkout URLs and hosted Stripe payment implies this is the informational lookup that precedes create_checkout or subscribe, but the description never names those alternatives or states when not to use this tool. Usage must be inferred from the sibling list rather than read from the text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_setup_statusGet setup statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile needs no restating. The description adds value beyond them by disclosing exactly what comes back — including transient blockers and a routing target ('next tool name') — which matters because no output schema exists. It omits whether the response changes shape once onboarding is finished or whether auth is required first.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the most important field (current step) before the supporting ones. The seven-item list is dense but every element is a distinct, actionable return field rather than filler. Minor cost: the enumeration reads as a payload dump rather than a purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema read tool, the description covers the return payload thoroughly, which is the main completeness burden. What is missing is the operational frame: no guidance on call sequencing, on the terminal state when setup is done, or on the meaning of the /connect fallback URL — an agent knows what it gets but not when or why to ask for it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-param tool applies. The description instead spends its words on the return contract, which is the only semantic surface available here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Returns') and a specific resource (onboarding/setup status), then enumerates the payload: current step, completed items, blockers, next tool name, instruction text, link, and /connect fallback. That distinguishes it cleanly from every sibling, none of which touch onboarding. It falls short of 5 only because the enumeration of return fields crowds out a crisp one-line statement of purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the mention of 'current onboarding step' and 'the next tool name' hints this is the entry point that routes an agent to other tools, but the description never says when to call it, whether to call it first, or what to do if onboarding is already complete. An agent must infer the sequencing itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_subscription_statusGet subscription statusARead-onlyIdempotentInspect
Returns trial/active/none billing state, remaining usage, and whether vehicle tools are gated.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is read-only, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds useful behavioral context by naming the billing states returned and disclosing that vehicle tools may be gated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted wording. The key return categories are listed compactly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool with no output schema, the description is nearly complete because it explains the main return states and the gating implication. A minor gap is that it does not mention any auth or account-scoping assumptions, though annotations cover safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics to explain. The description appropriately focuses on what the parameterless call returns rather than inventing input details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and return content: billing state (trial/active/none), remaining usage, and vehicle-tool gating. That clearly distinguishes it from siblings such as get_pricing, subscribe, and cancel_subscription.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool for checking subscription state, but it does not explicitly say when to use it instead of get_pricing, subscribe, cancel_subscription, or get_customer_portal. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vehicle_stateGet vehicle stateARead-onlyIdempotentInspect
Returns vehicle state (charge, climate, lock, location) from a short cache, or a metered vehicle_data read on miss. Does not wake the car.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered; the description goes beyond that by disclosing cache-backed reads, a metered vehicle_data fallback on miss (a cost/latency implication), and the no-wake guarantee. It leaves cache TTL, staleness of returned values, and failure behavior when the vehicle is offline unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence with the core behavior front-loaded (returns state, from cache, metered on miss) and the key constraint ('does not wake the car') placed last for emphasis. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully sketches the return categories, but it omits the optional-vin semantics, cache freshness, and what happens when the vehicle is asleep or unreachable — the cases most likely to confuse an agent. Adequate but with clear gaps for a single-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'vin' has 0% schema description coverage and is never mentioned in the description, so an agent gets no explanation of its format or, more importantly, what happens when it is omitted given that required count is 0. The description does not compensate for the schema gap at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns vehicle state') and enumerates the data categories returned (charge, climate, lock, location), which lets an agent distinguish it from narrower siblings like get_battery_and_range or get_location. It stops short of explicitly naming those siblings as alternatives, so differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Does not wake the car' implicitly routes the agent toward wake_vehicle when the car is asleep, and the cache/metered distinction implies a cheap-first-read strategy. However, no sibling is named and there is no explicit guidance on when to prefer get_vehicle_summary, get_location, or get_charging_status over this broader call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vehicle_summaryGet vehicle summaryARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, non-open-world, so the safety profile is covered. The description adds genuinely non-obvious behavior: a short cache, the fact that a cache miss triggers a metered vehicle_data read (cost implication), and that it will not wake a sleeping car. It stops short of stating cache TTL or staleness bounds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with the returned fields front-loaded and the cost/no-wake caveats following. No filler, no restatement of the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields and flags the metered-read cost, which is the key operational detail. The main gap is the unexplained `vin` parameter and the absence of required/optional clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single `vin` parameter, and the description never mentions it, let alone its format or whether it is optional (required count is 0, which is itself surprising and unexplained). The description provides no parameter meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ("Returns a vehicle snapshot") and enumerates the exact fields returned (online/asleep, battery, range, lock, climate, sentry, last location), so an agent knows precisely what comes back. It does not explicitly contrast itself with close siblings like get_vehicle_state, get_battery_and_range, or get_location, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is only implied: the cache note and "does not wake the car" suggest this is the cheap, non-intrusive read versus wake_vehicle, and the broad field list suggests it supersedes narrower reads like get_battery_and_range. However, there is no explicit statement of when to prefer it over get_vehicle_state or get_location, and no exclusion guidance beyond the wake hint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_virtual_key_statusGet virtual key statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No | ||
| simulate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real value beyond them by disclosing the return payload in the negative case (official tesla.com/_ak link plus owner-facing pairing steps) and by pre-empting a common misdiagnosis. It does not mention rate limits or the simulate behavior, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the primary answer, then the negative-case payload, then a one-line clarification. No filler and nothing that restates the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does a fair job sketching the return shape for the unpaired case. But it omits any description of parameters and does not say what 'paired' looks like in the positive response. For a zero-required-parameter status tool that is acceptable but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters, and the description never mentions either. The agent is left to guess that 'vin' scopes the check to a vehicle and what 'simulate' toggles — the latter is especially opaque for a read-only status tool. With zero coverage and no compensating prose, the description bears the full burden and does not meet it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Reports whether the virtual key is paired.' That is clearly distinct from vehicle-state or actuation siblings. It does not explicitly contrast itself with the closest sibling, get_setup_status or verify_vehicle, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent can infer this is the check to run when vehicle commands fail due to an unpaired key. The added caveat that approving Third-Party Apps is not the same as pairing is genuinely useful diagnostic guidance. However, there is no explicit when-to-use versus get_setup_status or verify_vehicle, and no prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
honk_hornHonk hornBInspect
Honks the horn. The vehicle must be in park.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, non-idempotent actuation, and the description adds the park precondition, which is real behavioral context. It says nothing about honk duration, rate limiting, or what happens if the vehicle is not in park (error vs. silent no-op).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action first and the constraint second; nothing is wasted and it is fully front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter actuation tool with no output schema, the description covers the action and the key precondition but leaves the vin argument entirely undocumented, which is a noticeable gap given 0% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter (vin) with 0% schema description coverage, and the description adds no meaning about what it expects or whether it defaults to a primary vehicle. With coverage this low the description should compensate, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ("honks the horn"), making the action unambiguous. It does not, however, distinguish this from the sibling flash_lights, which is the other obvious momentary actuation tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a concrete precondition — the vehicle must be in park — which is genuine usage guidance. It gives no guidance on when to choose this over flash_lights or other actuation tools, leaving that inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vehiclesList vehiclesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so safety is covered; the description adds value by disclosing the auth and entitlement gating plus the meaning of the setup_incomplete error. It stops short of describing pagination, empty results, or what fields each vehicle record carries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler; the capability and its prerequisites come first and the error-handling hint second. Every clause carries actionable information for the agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with a rich annotation set, the definition covers prerequisites and the one documented failure path, which is what an agent needs to call it and recover. With no output schema, it could have said a bit more about the shape of the returned vehicle list, but that is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is no parameter semantics to explain and the baseline of 4 applies. Schema coverage is 100% regardless and nothing is left ambiguous about invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists vehicles') and scopes it to those 'linked to this account', which separates it from per-vehicle readers like get_vehicle_state or get_vehicle_summary. It never explicitly contrasts with those siblings, so an agent must infer that this is the discovery call before per-vehicle calls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete preconditions for use (completed Tesla OAuth and an active trial or subscription) and routes the agent to get_setup_status when a setup_incomplete error occurs. It does not state what to do when the list is empty or when to prefer verify_vehicle, so a small inference remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lock_vehicleLock vehicleDIdempotentInspect
Locks the vehicle.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that — no mention of prerequisites such as the vehicle needing to be awake, or what error state results from locking an already-locked vehicle.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The sentence is short, but this is under-specification rather than conciseness — the brevity leaves every meaningful question unanswered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A state-changing vehicle command with no output schema and an undocumented identifier parameter needs far more: which vehicle is targeted, what preconditions exist, and what happens on failure. None of this is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter (vin) is unexplained in both schema and description. Notably, vin is not marked required, yet nothing in the description clarifies whether it is optional or how the target vehicle is resolved without it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Locks the vehicle" is essentially a restatement of the tool name/title, adding no scope or distinguishing detail. An agent can infer that it is the inverse of unlock_vehicle, but the description itself does no differentiating work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus unlock_vehicle or any other sibling, and no preconditions are mentioned. Usage is only implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nearest_superchargersNearest SuperchargersARead-onlyIdempotentInspect
Returns nearby Superchargers from the last cached location. Does not wake the car.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds genuinely new behavior: results are based on a cached location (potentially stale or not the car's current position) and the call avoids waking the vehicle. That is real value beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with what the tool returns before the caveat. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no output schema, the behavioral picture is adequate and the cached-location caveat is valuable. But with two undocumented parameters at 0% schema coverage, the definition leaves the agent without enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description makes no mention of either parameter. It never explains that 'vin' selects the vehicle or what 'limit' constrains (count of results), so the agent must guess at both.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns nearby Superchargers') plus a scope qualifier ('from the last cached location'), so an agent knows exactly what it gets back. It is distinguishable from siblings like get_charging_status or get_location, though it never names them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The line 'Does not wake the car' implicitly tells the agent this is the non-intrusive option versus wake_vehicle, which is useful routing. However, there is no explicit when-to-use/when-not statement and no named alternative, so guidance remains inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remote_startRemote startBDestructiveInspect
Remote-starts the vehicle. Requires confirm=true when confirmations are on. Blocked in read-only mode.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No | ||
| confirm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is established. The description adds beyond that by disclosing the confirmation gate and the read-only-mode block, which are genuinely operational facts. However, it says nothing about what the destructive effect actually is, whether the vehicle must be awake or in park, or whether a start window applies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and then the constraints, with no filler. The only minor cost is that the terse phrasing of the confirmation rule leaves the agent to infer what "confirmations are on" means in practice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent vehicle command with no output schema and 0% parameter coverage, the definition covers safety gating but not effect or outcome. An agent still lacks enough to know what success looks like or what preconditions the vehicle itself must satisfy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the full burden for two parameters. It explains the conditional role of confirm=true, which is real added meaning the bare boolean does not convey, but vin is never mentioned and neither parameter's format or source is clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Remote-starts the vehicle" gives a specific verb+resource and is clearly distinct from sibling actions like actuate_trunk, honk_horn, or set_climate. It stops short of naming an adjacent tool an agent might confuse it with, but the action itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states two real preconditions: confirm=true when confirmations are enabled, and that it is blocked in read-only mode. That is useful gating context, but there is no guidance on when an agent should choose remote start versus other actuation tools, or under what vehicle conditions it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_chargeSet chargeCInspect
Starts or stops charging, or sets the charge limit percent.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No | ||
| action | Yes | ||
| percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the description is not required to carry the full safety burden. Still, it adds nothing beyond that: it doesn't say whether starting charging when already charging is a no-op, whether a percent is mandatory when action="limit", or whether the vehicle must be awake or online.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with zero filler, which is structurally sound. But the terseness crosses into under-specification for a tool with three parameters and an enum, so the brevity costs more than it saves.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a control tool with three params, an enum action, no output schema, and no parameter descriptions, the definition should explain action/parameter coupling and the vehicle-targeting behavior. Neither is present, so an agent could easily call it with action="limit" and no percent, or with no vin for the wrong vehicle.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and does not: it never mentions vin (optional vs. implicit), the three allowed action values, or the permitted 50–100 percent range. Only a loose implication that "percent" pairs with the limit action is conveyed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names specific verbs and a resource ("Starts or stops charging, or sets the charge limit percent"), so an agent knows the general capability. However, it does not distinguish itself from the sibling set_charge_limit, which the third clause appears to duplicate, leaving real ambiguity about which tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing tells the agent whether to call this or set_charge_limit for a limit change, nor to check get_charging_status first. There are no prerequisites or exclusions listed, so selection between overlapping siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_charge_limitSet charge limitBIdempotentInspect
Sets the charge limit percent (50–100). Out-of-range values return invalid_arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No | ||
| percent | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false, closed-world), so the safety burden is light. The description adds genuinely new behavior — out-of-range input yields invalid_arguments — but says nothing about which vehicle is affected or what happens when vin is omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler, and the core action plus constraint are front-loaded. Slightly more could be said about targeting without hurting brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple idempotent setter with annotations and a constrained schema, the basic contract is covered. The missing piece is vehicle selection — with two parameters and no output schema, the silent vin parameter is the one real gap an agent would hit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, yet it only restates the 50–100 range already enforced by the schema's minimum/maximum. The vin parameter is never mentioned, leaving the targeting semantics (optional? defaults to active vehicle?) entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Sets the charge limit percent") with the valid range, so an agent knows exactly what the call does. It does not differentiate from the sibling set_charge, leaving the agent to infer that this sets the limit rather than starting charging.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the domain (setting a charge limit before charging). There is no explicit when-to-use or when-not-to-use guidance and no reference to set_charge or get_charging_status as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_climateSet climateBInspect
Starts or stops cabin climate / preconditioning.
| Name | Required | Description | Default |
|---|---|---|---|
| on | Yes | ||
| vin | No | ||
| driver_temp_c | No | ||
| passenger_temp_c | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations' general mutation and safety hints, the description identifies the specific vehicle state being changed and confirms that the tool both starts and stops preconditioning. It does not explain command prerequisites, how temperature settings affect the operation, or what happens when stopping with temperatures supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and contains no unnecessary wording. However, the slash construction is slightly imprecise, and the extreme brevity leaves little room for operationally important parameter guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter vehicle mutation with no parameter documentation or output schema, the basic purpose alone is not enough to support reliable invocation. Important gaps include VIN selection, temperature behavior and constraints, the relationship between on and the temperature fields, and any wake or connectivity prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description only indirectly explains the required on parameter through 'starts or stops.' It adds no explicit meaning for vin, driver_temp_c, or passenger_temp_c, including vehicle selection, valid temperature ranges, defaults, or interactions with on.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the actions and resource: starting or stopping cabin climate/preconditioning. It does not explicitly differentiate this tool from related siblings such as remote_start, set_seat_heater, or set_scheduled_departure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Starting or stopping preconditioning gives an implied use case, including both activation and deactivation. There is no guidance on when temperature arguments apply, whether the vehicle must be awake, or when another climate-related sibling would be preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_scheduled_departureSet scheduled departureCInspect
Enables or disables scheduled departure (minutes past midnight). Optionally keeps preconditioning on.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No | ||
| enable | Yes | ||
| departure_time | No | Minutes after midnight | |
| preconditioning_enabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutating, non-idempotent, non-destructive profile, so the description only needs to add context. It does add the preconditioning coupling hint, but omits key behavior: whether disabling clears the stored time, whether the vehicle must be awake/online, and whether preconditioning stays on when the feature is turned off.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words and the action front-loaded. However, the parenthetical '(minutes past midnight)' is syntactically attached to 'scheduled departure' rather than to the departure_time parameter, creating minor ambiguity about what it modifies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation with no output schema, the definition leaves too much open: no mention of success/failure semantics, no handling of the optional vin, and no light on the required/optional interaction between 'enable' and 'departure_time'. Annotations cover safety but not the operational details an agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, with just 'departure_time' documented as 'Minutes after midnight' — and the description merely repeats that same wording. The optional 'vin', the 'enable' toggle, and 'preconditioning_enabled' get no explanation, and it never clarifies what happens if 'enable' is true but no departure_time is supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb pair and resource ('Enables or disables scheduled departure'), which is clear enough to distinguish this from siblings like set_charge or set_climate. It lacks any explicit contrast with those neighbouring setting tools, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or prerequisite guidance at all. The agent is left to infer that this applies to vehicles and that preconditioning is related but configured elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_seat_heaterSet seat heaterCInspect
Sets a seat heater level (0-3). Climate on usually works better.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No | ||
| level | Yes | ||
| seat_position | Yes | 0 driver, 1 passenger, 2 rear left, 4 rear center, 5 rear right |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the mutation profile is covered. The description adds no behavioral context beyond that: nothing about per-seat state independence, whether the vehicle must be awake/online, or what happens on an out-of-range or invalid seat index. The 'climate on' remark is too vague to count as behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the operation and its range, which is efficient. The second sentence is vague filler whose meaning an agent cannot act on, so it does not fully earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter vehicle mutation with no output schema and only partial annotation coverage, the description leaves key questions open: what vin does when omitted, whether the call requires the vehicle to be awake, and how failures are reported. It is adequate only as a one-line summary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description needs to compensate and largely does not. It restates the level range (already in the schema as minimum/maximum) but says nothing about the optional 'vin' parameter (scope/selection of the vehicle) beyond what is implied, and adds no meaning to seat_position beyond the schema's own enumeration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Sets a seat heater level') and includes the value range (0-3), so an agent knows exactly what operation this performs. It does not distinguish itself from the sibling set_climate, which is the nearest competing tool for cabin comfort.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Climate on usually works better' is an ambiguous aside rather than real usage guidance: it never says whether climate must be on, whether this tool is preferred over set_climate, or when not to call it. No alternatives or preconditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_sentry_modeSet Sentry ModeCIdempotentInspect
Turns Sentry Mode on or off.
| Name | Required | Description | Default |
|---|---|---|---|
| on | Yes | ||
| vin | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered structurally. The description adds essentially nothing beyond that - no mention of whether the vehicle must be awake, whether the change persists, or what happens for an offline vehicle - and largely restates the title.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with zero filler, which is good structurally. However, the brevity is achieved through under-specification rather than efficiency, since key facts about targeting and preconditions are simply absent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter actuation tool with no output schema, the agent still needs to know how to target a vehicle and what state the vehicle must be in. With 0% schema description coverage and no annotations explaining preconditions, the definition leaves too much to guesswork.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden of explaining parameters. "On or off" loosely maps to the required boolean 'on', but the 'vin' parameter, which selects the target vehicle in a multi-vehicle account, is never mentioned, leaving a required-by-practice parameter undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (Sentry Mode) and a specific verb pair (turns on or off), so an agent can immediately tell what the tool does. It does not need to differentiate from siblings since none of the listed tools touch Sentry Mode, but it also offers no scoping detail beyond the bare toggle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives, no preconditions (e.g. vehicle must be awake or online), and no note on effects such as battery drain. The agent must infer all invocation context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_accountStart accountAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Owner email | ||
| simulate | No | On a demo account, finish this step without the human. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, non-idempotent, non-destructive mutation, and the description adds value beyond that by naming the side effect (sign-in email may be sent) and the return payload (email-sent flag plus /connect fallback URL). It does not explain what happens when an account already exists versus when one is created, which is the main ambiguity for a non-idempotent tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences that front-load the action, then the input, then the return value. No filler and no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the return-value burden by naming the two things returned. For a two-parameter setup tool with full schema coverage this is nearly complete; only the create-vs-attach branch and any session prerequisites are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both properties are already documented, and the description only restates the email parameter ("Accepts the owner's email") without adding format or constraints. The more unusual `simulate` parameter is never mentioned, so the description contributes nothing beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource pair ("creates or attaches an account") and scopes it to "this setup session," which separates it from vehicle-operation siblings. It stops short of naming the adjacent setup tools (start_tesla_oauth, verify_vehicle, get_setup_status) that an agent must choose between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "for this setup session" implies the frame in which to call it, but there is no explicit when-to-use rule, no precondition (e.g. only after start_tesla_oauth completes), and no statement of when to prefer a sibling instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_tesla_oauthStart Tesla sign-inAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| simulate | No | On a demo account, mark Tesla access as connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply generic hints (non-readOnly, non-idempotent, non-destructive, closed-world), so the description carries real weight and delivers: it discloses the return payload shape (URL + instruction text) and the downstream failure reporting path. It omits whether repeated calls invalidate prior URLs or what auth/setup state the call creates, and its mention of redirecting to Tesla's authorize endpoint sits in mild tension with openWorldHint=false, though the external hop happens in the browser rather than in the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and its outputs, with no filler or restatement of the title. The parenthetical about the documented authorize endpoint is slightly redundant but earns its place by clarifying where the URL leads.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by describing what comes back (start URL and instruction text) and how failures are later observed. Nothing essential for invoking it is missing given one optional parameter at full schema coverage, though the lifecycle of the returned URL (single-use, expiry) is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'simulate' parameter is fully explained in the schema itself, so the baseline of 3 applies. The description adds nothing about when or why an agent would set simulate, leaving the demo-account behavior entirely to the structured field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (starts Tesla sign-in) and even names the primary return artifact: a hosted OAuth start URL plus owner-facing instruction text. An agent can tell this initiates an auth flow rather than reading state. It does not, however, distinguish itself from the sibling 'start_account', which an agent could plausibly confuse with this setup entry point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear sequencing context by naming get_setup_status as the follow-up poll and stating which failure conditions (denied, expired, missing scope) that later call surfaces. It stops short of explicit exclusions or naming an alternative entry point such as start_account, so the agent must infer when this is not the right call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribeSubscribeBInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | ||
| interval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (non-read-only, non-destructive, non-idempotent, closed-world), the description adds real behavioral detail: yearly starts a 7-day trial requiring a card, monthly charges on first successful checkout, and no card handling occurs in chat. It does not say whether the returned URL expires, whether repeated calls create duplicate checkout sessions despite idempotentHint=false, or what permissions/account state are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences with the returned artifact front-loaded, then billing behavior, then a scope disclaimer. No filler; the only inefficiency is that plan semantics are omitted while the year/month distinction gets two sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly explains the return value (a single URL). However, for a billing tool sitting beside create_checkout and get_subscription_status, it omits plan differences, URL lifetime/reuse, and how this differs from the other checkout tools, leaving meaningful gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters, so the description must carry the semantics — but it never mentions 'plan' at all (standard vs plus is undefined anywhere) and only obliquely covers 'interval' via the yearly/monthly trial language. The enums constrain values but their business meaning is left to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete output: a single hosted Stripe Checkout URL or one-tap pay page for the owner to open, with plan/interval implied. The resource and result are clear, but it never distinguishes itself from the sibling create_checkout, which an agent could easily confuse with this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — 'subscribe' plus the plan/interval inputs suggest a subscription-start flow, and the line 'does not collect or charge a card in the chat' sets a boundary on what this tool will not do. There is no explicit when-to-use guidance and no naming of alternatives such as create_checkout, get_subscription_status, or cancel_subscription.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlock_vehicleUnlock vehicleADestructiveInspect
Unlocks the vehicle. Requires confirm=true unless the owner disabled confirmations. Blocked in read-only mode.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No | ||
| confirm | No | Must be true when confirmations are required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real behavior beyond the annotations: a confirmation gate that may be waived by the owner and a read-only-mode block. It doesn't disclose what happens on a rejected confirm or whether unlocking is reversible, so it stops short of full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and then the gating conditions. Nothing is wasted and no repetition of the title beyond the necessary verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with annotations and no output schema, the definition covers the critical gate (confirm) and the mode restriction. Only the vin parameter's meaning and failure behavior remain unexplained, which is a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%. The description does add conditionality to 'confirm' beyond the schema's terse 'Must be true when confirmations are required,' but the 'vin' parameter is never mentioned in either the schema or the description, leaving its role unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Unlocks the vehicle'), which implicitly contrasts with the sibling lock_vehicle. It doesn't name a sibling or scope explicitly, but the action is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the operational preconditions clearly: confirm=true is required unless owner confirmations are disabled, and the call is blocked in read-only mode. It doesn't discuss when to prefer this over siblings, but for a dedicated single-action tool that exclusion is not needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_vehicleVerify vehicleARead-onlyIdempotentInspect
Reports whether the connected car is reachable from cached state and fleet_status (asleep, offline, or unsupported). Does not count as a wake.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No | ||
| simulate | No | On a demo account, mark the car online. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavior: the answer comes from cached state plus fleet_status and the call has no side effect on vehicle wakefulness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the capability first and the non-waking guarantee second. Nothing is padded or repeated from the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully spells out the return semantics (reachability plus fleet_status values). The only remaining gap is the vin parameter and behavior when it is absent, which is not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: 'simulate' is documented in the schema, but 'vin' carries no description anywhere. The description only hints at the target ('the connected car') without clarifying how vin selects the vehicle or what happens when it is omitted (required parameters = 0).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('reports whether the connected car is reachable'), enumerates the possible states (asleep, offline, unsupported), and closes with 'Does not count as a wake,' which cleanly separates it from the wake_vehicle sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Does not count as a wake' implicitly tells the agent to use this instead of wake_vehicle when it only needs a reachability check. It stops short of naming the alternative or stating exclusions explicitly, so it is clear but not fully routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wake_vehicleWake vehicleAInspect
Wakes the vehicle. Cached reads do not need a wake. Wakes count against the monthly allowance.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the agent knows this is a non-idempotent mutation. The description adds genuinely new context by disclosing that wakes consume the monthly allowance, a quota cost not visible in structured fields. It does not say what happens after the wake (latency to come online, precondition like vehicle sleep state) or whether authentication/setup is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, the purpose front-loaded, followed by the two decision-relevant facts (cached reads, quota cost). No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter mutation with no output schema, the description covers purpose, a usage exclusion, and quota cost, which is adequate. It leaves two notable gaps: the target parameter is unexplained, and the post-wake behavior (how long until the vehicle is reachable) is unstated, which matters for an agent chaining calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'vin' has 0% schema description coverage and the description never mentions it, so nothing indicates it identifies the target vehicle or that it is technically optional in the schema. With one undocumented parameter the description should have compensated and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Wakes the vehicle'), which is unambiguous. It implicitly distinguishes itself from the get_* read tools by noting that cached reads do not need a wake, though it never names a sibling tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Cached reads do not need a wake' gives an explicit when-not-to-use condition, which is exactly the kind of guidance an agent needs to avoid unnecessary wakes. It stops short of naming the alternative read tools or explaining what state the vehicle must be in before waking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
34 tool updates
- First observed
actuate_trunk - First observed
cancel_subscription - First observed
create_checkout - First observed
flash_lights - First observed
get_battery_and_range - First observed
get_charging_history - First observed
get_charging_status - First observed
get_customer_portal - First observed
get_energy_usage - First observed
get_location - First observed
get_pricing - First observed
get_setup_status - First observed
get_subscription_status - First observed
get_vehicle_state - First observed
get_vehicle_summary - First observed
get_virtual_key_status - First observed
honk_horn - First observed
list_vehicles - First observed
lock_vehicle - First observed
nearest_superchargers - First observed
remote_start - First observed
set_charge - First observed
set_charge_limit - First observed
set_climate - First observed
set_scheduled_departure - First observed
set_seat_heater - First observed
set_sentry_mode - First observed
share_destination - First observed
start_account - First observed
start_tesla_oauth - First observed
subscribe - First observed
unlock_vehicle - First observed
verify_vehicle - First observed
wake_vehicle
Related MCP Connectors
Control your Tesla from your AI assistant - climate, charging, access, and security.
Tesla Fleet API for AI: send navigation destinations, read battery and location, run car commands.
Tesla data for your AI: battery, range, charging, tires, alerts, history. Controls off by default.
Control your Tesla - wake it, warm it up, unlock and more. Get your developer token at https://Infoseek.ai/mcp. Also requires your own Tesla developer token which is tied to your car/fleet.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables control and monitoring of Tesla vehicles through the Tessie API, providing access to vehicle state (battery, location, climate) and commands (lock/unlock, climate control, navigation) with support for both local and Cloudflare Worker deployment.11MIT
- AlicenseNot gradedqualityDmaintenanceIntegrates with Tesla Fleet API and TeslaMate API to control vehicles, monitor energy (Powerwall/Solar), manage charging, and analyze driving data, with generative UI and skill workflows.5MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to control and monitor Tesla vehicles via natural language through the Tessie API, supporting battery, climate, security, charging, and more.611MIT
- AlicenseNot gradedqualityDmaintenanceEnables control and monitoring of Tesla vehicles via the Tessie API, providing state and command tools for climate, locks, charging, and navigation.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.