ToolResult

@SerialName(value = "tool-result")
class ToolResult(val toolCallId: String, val toolName: String, val outputJson: JsonElement, val output: ToolResultOutput = ToolResultOutputs.toolResultOutputFromJson(outputJson), val modelOutput: ToolResultOutput = output, val isError: Boolean = with(ToolResultOutputs) { modelOutput.isToolResultError() }, val preliminary: Boolean = false, val providerMetadata: ProviderMetadata = ProviderMetadata.None) : StreamEvent(source)

Tool execution emitted a result. By default this is the final result — appended to the model's message log + dispatched to UI converters.

Tools whose executor is a kotlinx.coroutines.flow.Flow (built via StreamingTool { ... }) can emit intermediate progress snapshots before the final value; those land as ToolResult(preliminary = true). Preliminary results show in the UI (state stays OutputAvailable, preliminary flag set) but do NOT go to the model — the model only sees the final value once the Flow completes.

Constructors

Link copied to clipboard
constructor(toolCallId: String, toolName: String, outputJson: JsonElement, output: ToolResultOutput = ToolResultOutputs.toolResultOutputFromJson(outputJson), modelOutput: ToolResultOutput = output, isError: Boolean = with(ToolResultOutputs) { modelOutput.isToolResultError() }, preliminary: Boolean = false, providerMetadata: ProviderMetadata = ProviderMetadata.None)

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard