What Responses does better:
- Everything is a typed item. A conversation is a list of messages, function calls, function results and reasoning, all in one shape. That's cleaner for tool loops and agents than Chat Completions' messages with tool calls attached.
- Reasoning is carried between turns. Chat Completions has no place for it.
- Streaming has named event types, instead of fragments the client has to piece together.
- Optional server-side state (previous_response_id) and built-in tools (web search, file search, code interpreter, remote MCP).