Skip to main content

dealer.information

One dealer group with several rooftops, each carrying operating details, capabilities, and a default fee schedule

A2A invocation

This skill is invoked through A2A's SendMessage operation — the SendMessage JSON-RPC method on AAP's sole transport, the JSON-RPC binding — not a dedicated REST URL. (The HTTP+JSON binding was removed in v1.1.0.) AAP only defines what goes inside Message.parts[].data.

The dealer.information skill returns a dealership's static profile. It is the simplest AAP call: the request carries no parameters, the response carries a DealerInformation object describing the dealer group and its rooftops — each with identity, address, contact channels, business hours, default dealer fees, and service capabilities.

PropertyValue
Skill iddealer.information
Request typedealer.information.request
Response typedealer.information.response
Anonymous allowedyes
Consent requiredno
ADF compatibleno

Request shape

The request has a single field — the AAP type identifier. There are no parameters.

{
"type": "dealer.information.request"
}
FieldTypeRequiredDescription
typestring constyesAlways dealer.information.request.

additionalProperties: false. The request is invalid if any other property is present.

Response shape

The response wraps a DealerInformation object inside the standard AAP response envelope. A DealerInformation is a dealer group (name + optional welcome_message) plus one or more rooftops, where each rooftop is an individual dealership location:

{
"type": "dealer.information.response",
"data": {
"name": "string",
"welcome_message": "string",
"rooftops": [
{
"name": "string",
"legal_name": "string",
"website": "https://...",
"geo": { "latitude": 0, "longitude": 0 },
"emails": [{ "name": "string", "value": "string" }],
"phones": [{ "name": "string", "value": "+1XXXXXXXXXX" }],
"address": {
"country": "US",
"state": "CA",
"city": "string",
"address_line_1": "string",
"address_line_2": "string",
"zip": "94103"
},
"schedules": [
{
"name": "sales",
"value": { "monday": { "open": "HH:MM", "close": "HH:MM" }, "sunday": null }
}
],
"timezone": "America/Los_Angeles",
"notes": "string",
"fees": [
{ "name": "Documentation fee", "amount": 500 }
],
"capabilities": ["sales", "service", "parts", "financing", "trade_in", "delivery"]
}
]
},
"message": "Optional contextual note from the dealer."
}

data carries the full DealerInformation object. The only required top-level fields are name and rooftops (at least one). Within each rooftop, only name is required; everything else is optional.

FieldTypeRequiredNotes
data.namestringyesDealer group name.
data.welcome_messagestringnoOptional greeting surfaced to the buyer.
data.rooftops[]Rooftop[]yesOne entry per dealership location; at least one.
rooftop.namestringyesPublic-facing name of the location (also used by a vehicle's rooftop field).
rooftop.legal_namestringnoLegal/registered business name.
rooftop.websiteURInoPublic website for this location.
rooftop.geo.latitude / geo.longitudenumbernoCoordinates of the location.
rooftop.emails[]{ name, value }[]novalue holds the email address; name is an optional label (e.g. "Sales").
rooftop.phones[]{ name, value }[]novalue holds the phone number (e.g. +14155550100); name is an optional label.
rooftop.addressAddressnoPhysical address. country is optional and defaults to US.
rooftop.schedules[]object[]noNamed weekly hours; each entry is { name, value } where value maps each weekday to { open, close } (24h HH:MM) or null when closed.
rooftop.timezonestringnoIANA timezone identifier (e.g. America/Los_Angeles).
rooftop.notesstringnoFree-text notes (e.g. "closed major holidays").
rooftop.fees[]{ name, amount }[]noComplete default schedule of mandatory, non-government dealer charges and required add-ons. Omitted = unknown; [] = affirmatively none. Publisher/discovery metadata only; consumers do not join it onto vehicles.
rooftop.capabilities[]string[]noService capabilities, e.g. sales, service, parts, financing, trade_in, delivery. Rooftops MAY also advertise which vehicle types they sell with tags such as motorcycle_sales or powersports, so buyer agents know a rooftop's vehicle_type mix before searching.

How rooftop fees are used

Rooftop fees are defaults for the inventory publisher, not a consumer-side inheritance mechanism. A publisher MAY start from this schedule, apply any vehicle-specific replacement, and then place the complete effective fee snapshot on the returned Vehicle. Vehicle-level fees remains optional even when price is present. When supplied, it is a complete itemization rather than a delta. Buyer agents MUST NOT fetch this skill to complete a vehicle breakdown or merge rooftop and vehicle arrays.

Full example

A complete response from a dealer group with two rooftops:

{
"type": "dealer.information.response",
"data": {
"name": "Demo Auto Group",
"welcome_message": "Welcome — happy to help by phone or video call.",
"rooftops": [
{
"name": "Demo Toyota San Francisco",
"legal_name": "Demo Toyota of San Francisco, LLC",
"website": "https://sf.demo-toyota.example.com",
"geo": { "latitude": 37.7935, "longitude": -122.3946 },
"emails": [
{ "name": "Sales", "value": "sales@sf.demo-toyota.example.com" }
],
"phones": [
{ "name": "Sales", "value": "+14155550100" },
{ "name": "Service", "value": "+14155550101" }
],
"fees": [
{ "name": "Documentation fee", "amount": 500 },
{ "name": "Pre-installed theft protection", "amount": 1000 }
],
"address": {
"country": "US",
"state": "CA",
"city": "San Francisco",
"address_line_1": "1450 Howard Street",
"zip": "94103"
},
"schedules": [
{
"name": "sales",
"value": {
"monday": { "open": "09:00", "close": "20:00" },
"tuesday": { "open": "09:00", "close": "20:00" },
"wednesday": { "open": "09:00", "close": "20:00" },
"thursday": { "open": "09:00", "close": "20:00" },
"friday": { "open": "09:00", "close": "20:00" },
"saturday": { "open": "09:00", "close": "18:00" },
"sunday": null
}
},
{
"name": "service",
"value": {
"monday": { "open": "07:00", "close": "18:00" },
"tuesday": { "open": "07:00", "close": "18:00" },
"wednesday": { "open": "07:00", "close": "18:00" },
"thursday": { "open": "07:00", "close": "18:00" },
"friday": { "open": "07:00", "close": "18:00" },
"saturday": { "open": "08:00", "close": "14:00" },
"sunday": null
}
}
],
"timezone": "America/Los_Angeles",
"notes": "Closed major US holidays.",
"capabilities": ["sales", "service", "parts", "financing", "trade_in", "delivery"]
},
{
"name": "Demo Toyota Oakland",
"legal_name": "Demo Toyota of Oakland, LLC",
"website": "https://oak.demo-toyota.example.com",
"geo": { "latitude": 37.8044, "longitude": -122.2712 },
"emails": [
{ "name": "Sales", "value": "sales@oak.demo-toyota.example.com" }
],
"phones": [
{ "name": "Sales", "value": "+15105550100" }
],
"address": {
"country": "US",
"state": "CA",
"city": "Oakland",
"address_line_1": "200 Broadway",
"zip": "94607"
},
"schedules": [
{
"name": "sales",
"value": {
"monday": { "open": "09:00", "close": "19:00" },
"tuesday": { "open": "09:00", "close": "19:00" },
"wednesday": { "open": "09:00", "close": "19:00" },
"thursday": { "open": "09:00", "close": "19:00" },
"friday": { "open": "09:00", "close": "19:00" },
"saturday": { "open": "10:00", "close": "17:00" },
"sunday": null
}
}
],
"timezone": "America/Los_Angeles",
"capabilities": ["sales", "trade_in"]
}
]
},
"message": "Welcome — happy to help by phone or video call."
}

When to use it

  • The buyer agent needs a rooftop's name, address, or hours to surface to the user.
  • The buyer agent needs to confirm a rooftop's capabilities (e.g. service or trade_in) before routing the user to that location.
  • The buyer agent needs the sales phone or email to display alongside a confirmed lead response.

dealer.information is anonymous and consent-free; LLM-driven buyer agents are encouraged to call it eagerly and cache the result.