Tool
fun <TInput, TOutput, TContext> Tool(name: String, description: String, inputSerializer: KSerializer<TInput>, outputSerializer: KSerializer<TOutput>, needsApproval: suspend (input: TInput, options: ToolPredicateOptions<TContext>) -> Boolean? = null, toModelOutput: (TOutput, ToolPredicateOptions<TContext>) -> ToolResultOutput? = null, schemaOptions: ToolSchemaOptions = ToolSchemaOptions {}, inputExamples: List<String> = emptyList(), onInputStart: suspend (streamingId: String) -> Unit? = null, onInputDelta: suspend (streamingId: String, delta: String) -> Unit? = null, onInputAvailable: suspend (toolCallId: String, input: TInput) -> Unit? = null, metadata: Map<String, JsonElement> = emptyMap(), providerOptions: ProviderOptions = ProviderOptions.None, executor: suspend ToolExecutionContext<TContext>.(TInput) -> TOutput): Tool<TInput, TOutput, TContext>(source)
Single-value Tool factory — executor is a suspend function returning TOutput.
inline fun <TInput, TOutput, TContext> Tool(name: String, description: String, noinline needsApproval: suspend (input: TInput, options: ToolPredicateOptions<TContext>) -> Boolean? = null, noinline toModelOutput: (TOutput, ToolPredicateOptions<TContext>) -> ToolResultOutput? = null, schemaOptions: ToolSchemaOptions = ToolSchemaOptions {}, inputExamples: List<String> = emptyList(), noinline onInputStart: suspend (streamingId: String) -> Unit? = null, noinline onInputDelta: suspend (streamingId: String, delta: String) -> Unit? = null, noinline onInputAvailable: suspend (toolCallId: String, input: TInput) -> Unit? = null, metadata: Map<String, JsonElement> = emptyMap(), providerOptions: ProviderOptions = ProviderOptions.None, noinline executor: suspend ToolExecutionContext<TContext>.(TInput) -> TOutput): Tool<TInput, TOutput, TContext>(source)
Reified convenience overload — infers serializers from type parameters.