Skip to main content

Introduction

Buyer agent and dealership digital storefront connected by typed AAP messages

Auto Agent Protocol (AAP) is a strict A2A v1.0 profile that defines the typed automotive data shapes AI agents and car dealerships exchange when they discover, browse, and submit leads.

AAP does not invent a new wire protocol. It rides on top of the A2A (Agent2Agent) specification: every AAP message travels inside an A2A Message.parts[].data value as a typed DataPart. Dealers MAY expose their AAP skills via either A2A binding — JSON-RPC 2.0 or HTTP+JSON/REST. gRPC is out of scope for v0.1.

The extension is identified by a single URI:

https://autoagentprotocol.org/extensions/a2a-automotive-retail/v0.1

A dealer agent declares itself AAP-compliant by listing this URI in capabilities.extensions[] of its A2A agent card and by implementing the seven required AAP skills.

What AAP standardizes

Honeycomb of seven AAP skills: dealer.information, inventory.facets, inventory.search, inventory.vehicle, lead.general, lead.vehicle, lead.appointment

AAP v0.1 standardizes seven skills that cover the read-and-lead lifecycle of automotive retail:

SkillPurpose
dealer.informationDealership profile, locations, brands, hours, contact channels, capabilities
inventory.facetsAggregated counts and ranges over the dealer's inventory
inventory.searchFiltered, paginated inventory queries
inventory.vehicleDetail view of one specific vehicle (by VIN, stock, or vehicle_id)
lead.generalOpen-ended dealership inquiry (financing, trade-in, callback)
lead.vehicleADF-mappable vehicle-specific lead
lead.appointmentTest drive, showroom visit, handover, phone/video call, trade-in appraisal

It does NOT cover authentication beyond bearer, payments, financing approval, RFQ/quote workflows, trade-in valuations, or reservations. Future versions MAY extend this surface; v0.1 is intentionally minimal.

Layered architecture

Three-layer stack: HTTP at the bottom, A2A v1.0 in the middle, AAP automotive profile on top

AAP sits as a profile on top of A2A, which itself sits on top of HTTP. AAP never touches the wire format directly — it defines the shape of typed DataParts that A2A bindings carry.

Anything an A2A client already does — message envelopes, task model, error mapping, server-sent events — works unchanged. AAP only specifies the typed payloads inside DataPart.data.

Quick start

A buyer agent talks to a compliant dealer agent in three steps.

1. Discover the agent

Fetch the A2A agent card at the dealer's well-known URL:

curl https://demo-toyota.example.com/.well-known/agent-card.json

Confirm the card lists the AAP extension URI under capabilities.extensions[].uri and exposes at least one supported_interfaces[] entry whose protocol_binding is JSONRPC or HTTP+JSON.

2. Pick a binding

A2A defines two protocol bindings AAP supports. Both carry identical AAP payloads.

BindingA2A specAAP page
JSON-RPC 2.0A2A Section 9JSON-RPC binding
HTTP+JSONA2A Section 11REST binding

3. Send a typed AAP message

Wrap an AAP request inside an A2A Message and POST it to the agent endpoint. Below is the simplest call — dealer.information over the HTTP+JSON binding (using the A2A v1.0 wire format):

curl -X POST https://demo-toyota.example.com/a2a/message:send \
-H "Content-Type: application/json" \
-d '{
"message": {
"messageId": "01HZ9G5N8D1Y4M6SP9C4XKVW3Q",
"role": "ROLE_USER",
"parts": [
{
"data": { "type": "dealer.information.request" },
"mediaType": "application/vnd.autoagent.dealer-information-request+json"
}
]
},
"configuration": {
"acceptedOutputModes": ["application/vnd.autoagent.dealer-information-response+json"]
}
}'

The dealer agent replies with an A2A Message whose first DataPart.data is an AAP response:

{
"message": {
"messageId": "01HZ9G5P2KA8RT9WMS3B4C5D6E",
"role": "ROLE_AGENT",
"parts": [
{
"data": {
"type": "dealer.information.response",
"data": {
"dealer_id": "dealer_demo_toyota",
"legal_name": "Demo Toyota of San Francisco, LLC",
"trade_name": "Demo Toyota",
"brands": ["Toyota"],
"address": {
"line1": "100 Market St",
"city": "San Francisco",
"region_code": "CA",
"postal_code": "94105",
"country_code": "US"
}
}
},
"mediaType": "application/vnd.autoagent.dealer-information-response+json"
}
]
}
}