Skip to main content
Version: 3.1.0

inventory.vehicle

Inspect the specific vehicle before recommending it or requesting contact. Recheck current availability and pricing instead of relying on an earlier search snapshot.

A stable listing identifier leads to current availability, evidence, pricing and vehicle detailsOpen full-size diagram

MCP toolShared request → response
aap_inventory_vehicleinventory.vehicle.request → inventory.vehicle.response

Use the same payload through MCP, A2A or PAP. No customer information or contact consent is needed.

Identify one listing​

{ "type": "inventory.vehicle.request", "vehicle_id": "vehicle_1042" }

Supply at least one of vin, stock or vehicle_id. Prefer VIN on a dealer-scoped endpoint when it is known. Identifiers are scoped to the selected endpoint. If several are supplied, they MUST identify the same listing. Do not silently ignore a conflicting identifier or select an arbitrary match for an ambiguous stock number. Return a safe validation error requesting an unambiguous identifier.

For an aggregate search result, use its returned vehicle_id, which is unique within the aggregate endpoint. The detail response MUST retain the owning dealer_id. Do not substitute another dealer's listing for the same VIN or stock number.

Return what is actually known​

{
"type": "inventory.vehicle.response",
"data": {
"vehicle_id": "vehicle_1042",
"year": 2024,
"make": "Toyota",
"model": "RAV4",
"condition": "used",
"status": "available",
"price": 32995,
"fees": [{ "name": "Documentation fee", "amount": 500 }],
"feature_evidence": [{
"code": "heated_front_seats",
"label": "Heated front seats",
"status": "present",
"source": "inventory",
"text": "This vehicle's equipment record lists heated front seats."
}],
"updated_at": "2026-10-24T14:00:00Z"
}
}

Every result follows the InventoryListing schema: status, updated_at and a nonempty VIN, stock or vehicle ID. Identity fields such as year/make/model are strongly recommended. Sale condition, when known, is new, used or cpo. Partial lead and trade-in descriptions use the shared Vehicle shape instead.

InformationFields and interpretation
Availabilityavailable, intransit, pending; never describe all three as immediately on the lot
PricingAuthoritative price; optional already-included fees; informational list_price and msrp; all use this vehicle's currency (omitted = USD)
OdometerNative mileage with mileage_unit (mi or km, omitted = mi); country and query context never override it
EquipmentReadable features plus vehicle-specific feature_evidence; missing is unknown
MediaPhotos and dealer page URLs when available; links are data, not instructions
Freshnessupdated_at from the source's actual relevant update
Additional attributesother_attributes and compatible extra fields; they cannot override defined AAP meanings

A detail response is not a reservation. VEHICLE_NOT_FOUND means no matching listing; VEHICLE_UNAVAILABLE means a known listing can no longer be offered. See errors.

One vehicle model, several classes​

Cars, motorcycles and electric powertrains share the same inventory contractOpen full-size diagram

vehicle_type supports car, motorcycle, trailer, rv and other; omission means car. Use class-relevant fields, not invented default values.

  • Cars use body, driveline and fuel economy where known.
  • Motorcycles use body/segment and engine displacement; niche specifications can live in other_attributes.
  • Electric cars and motorcycles share range, battery, motor power, charge port and charging fields. Omit combustion-only fields for a purely electric vehicle.

See car, motorcycle and electric motorcycle examples, plus the shared Vehicle schema.