AgentTool

open class AgentTool(val agent: BaseAgent, val skipSummarization: Boolean = false, val includePlugins: Boolean = true, val propagateGroundingMetadata: Boolean = false) : BaseTool

A tool that wraps a BaseAgent.

This tool allows an agent to be called as a tool within a larger application. The agent's input schema is used to define the tool's input parameters, and the agent's output is returned as the tool's result.

Constructors

Link copied to clipboard
constructor(agent: BaseAgent, skipSummarization: Boolean = false, includePlugins: Boolean = true, propagateGroundingMetadata: Boolean = false)

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard

The agent to wrap.

Link copied to clipboard

The custom metadata of the tool.

Link copied to clipboard

The description of the tool.

Link copied to clipboard

Whether the parent runner's plugins should be propagated to the wrapped agent's runner. When true (the default), the wrapped agent observes the same plugins as the parent (their plugin callbacks fire for the child invocation). When false, the wrapped agent runs with no plugins.

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. Returning Unit means "no response yet": the FR event is suppressed so the function-call event (which carries the call id in longRunningToolIds and is thus the turn's final response) ends the turn without re-invoking the model. A non-Unit return -- including an explicit empty Map -- is treated as a real response and emitted. (Unit suppression aligns with Python; Java instead always emits {}.) The longRunningToolIds id also drives the resumable-mode pause gate so the invocation can be resumed later via a user-injected function-response.

Link copied to clipboard

The name of the tool.

Link copied to clipboard

Whether grounding metadata produced by the wrapped agent should be propagated back to the parent invocation. Used by the built-in-tool workaround (e.g. GoogleSearchAgentTool) so the parent still surfaces the sub-agent's grounding metadata.

Link copied to clipboard

Whether to skip summarization of the agent output in the parent agent.

Functions

Link copied to clipboard
open fun close()
Link copied to clipboard
open override fun declaration(): FunctionDeclaration

Returns the underlying function declaration.

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
open suspend override fun run(context: ToolContext, args: Map<String, Any>): String

Executes the tool and returns its result.