Package com.embabel.agent.api.annotation
Annotation MatryoshkaTools
-
- All Implemented Interfaces:
@Target(allowedTargets = {AnnotationTarget.CLASS}) public @interface MatryoshkaTools
Marks a class as a MatryoshkaTool container.
When applied to a class containing
@LlmToolmethods, creates a facade tool that exposes those methods when invoked. This enables progressive tool disclosure.Example - Simple facade:
@MatryoshkaTools( name = "database_operations", description = "Database operations. Invoke to see specific tools." ) public class DatabaseTools { @LlmTool(description = "Execute a SQL query") public QueryResult query(String sql) { ... } @LlmTool(description = "Insert a record") public InsertResult insert(String table, Map<String, Object> data) { ... } } // Create the MatryoshkaTool MatryoshkaTool tool = MatryoshkaTool.fromInstance(new DatabaseTools());Example - Category-based selection:
@MatryoshkaTools( name = "file_operations", description = "File operations. Pass category to select tools." ) public class FileTools { @LlmTool(description = "Read file contents", category = "read") public String readFile(String path) { ... } @LlmTool(description = "List directory", category = "read") public List<String> listDir(String path) { ... } @LlmTool(description = "Write file", category = "write") public void writeFile(String path, String content) { ... } @LlmTool(description = "Delete file", category = "write") public void deleteFile(String path) { ... } } // Creates a category-based MatryoshkaTool automatically MatryoshkaTool tool = MatryoshkaTool.fromInstance(new FileTools());
-
-
Field Summary
Fields Modifier and Type Field Description private final Stringnameprivate final Stringdescriptionprivate final BooleanremoveOnInvokeprivate final StringcategoryParameter
-