The Agent Card
ETag, and any origin can read it. When the storefront is turned off, or the company’s account is paused for billing, the card and the endpoint answer 404.
Ask a question
SendSendMessage to the interface URL. Put the question in a text part. To ask about particular products, add a data part with up to 10 ids: product IDs or slugs, or variant IDs or SKUs.
- The text part is the answer: plain text, in the language of the question.
- The data part holds
linksto the store pages the answer is based on, with the same link types as UCP Ask. It also holds amessageslist with anot_foundentry for each ID that names nothing the shopper can see. The data part is left out when there’s nothing to put in it. - The reply keeps your
contextId, or starts a new one when you send none. The store agent doesn’t remember earlier messages: send each question with what it needs. - Send
A2A-Version: 1.0. A request without the header is read as 1.0.
Methods and errors
Other errors:
A2A errors carry a
google.rpc.ErrorInfo entry in error.data, with a reason such as TASK_NOT_FOUND and the domain a2a-protocol.org. Errors answer HTTP 200, with two exceptions that carry a Retry-After header:
- 429 with reason
RATE_LIMITED: the store has used its daily allowance.Retry-Aftercounts the seconds to the next UTC day, when the allowance resets. - 503 with reason
SERVICE_UNAVAILABLE: answers are temporarily unavailable. Retry after 60 seconds.
id is a JSON-RPC notification. The endpoint answers 204 with no body and doesn’t act on it, because every A2A method expects a reply.
A2A questions share UCP Ask’s rate limits and daily allowance.