+ * Each tool can be referenced by several equivalent identifiers:
+ *
+ *
{@code @Tool} function name (the runtime truth: {@code cb.getToolDefinition().name()},
+ * e.g. {@code browser_use})
+ *
Spring bean name (e.g. {@code browserUseTool})
+ *
Java class simple name (e.g. {@code BrowserUseTool} — what the seed data and
+ * legacy {@code mate_agent_tool.tool_name} bindings happen to store)
+ *
+ * Filtering operations ({@link #withAllowedToolsOnly}, {@link #withDeniedToolsFiltered},
+ * {@link #excluding}) accept any of these aliases, so callers don't need to know which
+ * naming convention the persistence layer happens to use. This is the same pattern Spring's
+ * {@code BeanFactory} uses for bean names + aliases.
+ *
* @author MateClaw Team
*/
public class AgentToolSet {
@@ -21,26 +35,69 @@ public class AgentToolSet {
private final List