FunctionTool

abstract class FunctionTool(val name: String, val description: String, val isLongRunning: Boolean = false, val customMetadata: Map<String, Any> = emptyMap(), requiresConfirmation: (Map<String, Any>) -> Boolean = { false }) : BaseTool

Represents a compile-time generated tool that wraps a function annotated with com.google.adk.kt.annotations.Tool.

The optional confirmation gate (set via the requiresConfirmation constructor parameter) makes an invocation pause for human approval before the underlying function runs:

The gate has two forms:

  • Per-call predicate (the primary constructor): a (args) -> Boolean is invoked on every call with the function's args and decides whether to gate this invocation, e.g. requiresConfirmation = { args -> (args["amount"] as Int) > 1000 }. The default value { false } disables the gate entirely.

  • Boolean (the secondary constructor): a constant flag that gates either every invocation (true) or none (false). It is a thin wrapper that lifts the Boolean into a constant predicate { value }.

Constructors

Link copied to clipboard
constructor(name: String, description: String, isLongRunning: Boolean = false, customMetadata: Map<String, Any> = emptyMap(), requiresConfirmation: Boolean)

Boolean convenience constructor: pass true to gate every invocation, false to skip the gate entirely. Equivalent to passing { requiresConfirmation } to the primary constructor.

constructor(name: String, description: String, isLongRunning: Boolean = false, customMetadata: Map<String, Any> = emptyMap(), requiresConfirmation: (Map<String, Any>) -> Boolean = { false })

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard

The custom metadata of the tool.

Link copied to clipboard

The description of the tool.

Link copied to clipboard
val isLongRunning: Boolean = false

Whether the tool's final result will be delivered out-of-band. When true, the framework marks the call as long-running and uses the tool's return value as the function-response payload (or suppresses the response entirely if the tool returns Unit).

Link copied to clipboard

The name of the tool.

Functions

Link copied to clipboard
open override fun close()
Link copied to clipboard

Returns the underlying function declaration.

Link copied to clipboard
abstract suspend fun execute(context: ToolContext, args: Map<String, Any>): Any

Executes the function with the provided args, optionally utilizing the context.

Link copied to clipboard
open suspend fun processLlmRequest(toolContext: ToolContext, llmRequest: LlmRequest): LlmRequest

Processes the LLM request before it is sent.

Link copied to clipboard
suspend override fun run(context: ToolContext, args: Map<String, Any>): Any

Executes the tool. This overrides the generic base method to apply the optional confirmation gate before delegating to execute.