MCP server exposing Toyota Connected Services operations as tools. Provides vehicle status, telemetry, location, climate control, electric vehicle management, trip history, and remote commands (lock/unlock/horn/find).
Server has 14 tools with consistent naming (verb_noun pattern) and descriptions present for all. Input schemas are visible and typed. However, descriptions are terse (avg ~60 chars, well below the 194-char baseline), parameter descriptions lack detail on constraints and formats, and output schemas are not documented. No error handling guidance, no confirmation patterns for destructive operations despite 4 WRITE tools, and VIN resolution logic is underdocumented. Composition is sound (single responsibility per tool), but descriptions need expansion to meet LLM-optimization standards.
Check authentication status and token expiry.
Fetch climate status: running state, temperature, heating/seat options.
Fetch EV status: battery level, charging status, range.
Fetch vehicle health: warning lights and health alerts.
Fetch GPS location: coordinates and timestamp.
Flash lights and sound horn to locate the vehicle. WRITE OPERATION — requires confirm=True to execute. This sends a command to a physical vehicle.
Descriptions are terse (avg ~60 chars vs 194-char baseline). Most lack context on WHEN to use the tool, prerequisites, or what the LLM should expect. E.g., 'Fetch telemetry: fuel level, odometer, 12V battery' omits that this requires authentication and may return None if unavailable.
VIN parameter description is identical across 10 tools ('Vehicle VIN. Resolved via 4-step order if omitted.') but the 4-step resolution logic is not explained. LLMs cannot understand what 'resolved via 4-step order' means without seeing the algorithm. This invites misuse.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Sound the vehicle horn. WRITE OPERATION — requires confirm=True to execute. This sends a command to a physical vehicle.
Lock vehicle doors. WRITE OPERATION — requires confirm=True to execute. This sends a command to a physical vehicle.
Fetch remote/lock status: lock state and caution count.
Unlock vehicle doors. WRITE OPERATION — requires confirm=True to execute. This sends a command to a physical vehicle.
Fetch telemetry: fuel level, odometer, 12V battery.
Fetch trip history with optional date range.
Fetch full detail for a single trip by ID.
List all vehicles linked to the Toyota account.
Output schemas are not documented. Tools return 'dict[str, Any] | None' with no field descriptions. LLMs cannot plan downstream calls or extract specific fields without knowing the response structure. E.g., does telemetry return {fuel_level, odometer, battery_12v} or {fuel, mileage, voltage}?
Destructive operations (remote_lock, remote_unlock, remote_horn, remote_find) require confirm=True but lack error guidance. If an LLM passes confirm=False by mistake, what happens? Is it silently ignored, or does it return an error? No recovery guidance provided.
trips_list accepts from_date, to_date, limit, and page parameters but lacks constraints. What date format is expected? Is limit 1-50 or 1-1000? What is the max page number? Unbounded parameters invite invalid LLM calls.