v0.14.0 — buffered SSE for tool/schema streaming stream=true with tools or response_format no longer returns a 400. A tool call or a schema-validated answer only exists once the full response is computed, so we buffer it and replay it as a single-shot SSE stream (text/event-stream): opening role chunk -> one content or tool_calls delta (streaming tool_calls carry the required index) -> finish chunk -> data: [DONE]. The client's streaming SDK gets a valid stream, just not token-incremental. Plain chat still streams incrementally. Genuine failures still surface as 422/500 rather than a stream. Additive: the v0.13.0 400 on stream+tools / stream+schema is replaced by buffered SSE. 190 tests passing. Ships psyb0t/aicodebox:v0.14.0.