Nested Tool
A Tool whose inner tools can be enumerated without an com.embabel.agent.core.AgentProcess. The minimal abstraction for "this tool is a facade over a fixed set of inner tools" — used by out-of-process consumers (REST gateway, typed-surface generators, documentation, tree-printers) that have no agent-process scope yet still need the children for namespacing or display.
Sits below ProgressiveTool in the type hierarchy: every ProgressiveTool also has an out-of-process inner-tools view via innerTools so callers that don't have a process don't have to pass a synthetic one. UnfoldingTool inherits innerTools from here unchanged.
Implement directly when a tool exposes a fixed inner-tool set but doesn't want the chat-loop revelation semantics of UnfoldingTool (e.g. agentic tools that run their own inner LLM loop and shouldn't have their parent replaced in the LLM toolset).
Inheritors
Properties
Tool definition for LLM
The inner tools this facade exposes. Must be safe to call without an com.embabel.agent.core.AgentProcess in scope.
Optional metadata
Functions
Execute the tool with JSON input.
Execute the tool with JSON input and out-of-band context.
Extension function to convert an Embabel Tool to a Spring AI ToolCallback.
Wrap this tool to conditionally await before execution.
Wrap this tool to always require confirmation before execution.
Create a new tool with additional definition metadata entries merged in. Existing keys are overwritten by the new values.
Create a new tool with a single definition metadata entry added.
Create a new tool with a different description. Useful for providing context-specific descriptions while keeping the same functionality.
Extension function to wrap a Tool with event publication.