Future<dynamic> execute(String name, Map<String, dynamic> args) async { final tool = _tools[name]; if (tool == null) throw ArgumentError('Tool $name not found'); return await tool.func.execute(args); }