The chat client is the model boundary
In Chapter 3, the Agent owned behavior: name, instructions, tools, and the run boundary. The chat client is the dependency behind that agent. It is the provider-facing object that knows how to send normalized messages to an inference service and return normalized responses.
This decoupling is why MAF can present agents as a common abstraction while still supporting different model providers. Microsoft Learn describes MAF agents as using chat client implementations from inference services, and its provider guidance notes that provider capabilities vary across tools, structured outputs, file search, MCP tools, and background responses (agents, providers).
Messages, roles, and conversation turns
The vocabulary from Chapter 1 still applies: an agent perceives input, reasons with a model, and responds or acts. At the chat-client layer, that loop is represented as a sequence of messages. Each message has a role such as system, user, assistant, or tool, plus one or more content items.
Conversation state is not magic memory. For a direct chat-client call, you usually pass the prior turns again as Message objects, and some providers can also use a provider conversation identifier through options. At the agent level, MAF adds higher-level session concepts for longer-running conversations; the direct client remains the lower-level model boundary.