using System.Linq; using System.Threading; using System.Threading.Tasks; namespace io.github.hatayama.uLoopMCP { /// /// GetToolDetails tool handler - Type-safe implementation using Schema and Response /// Retrieves detailed information about all registered Unity MCP tools /// Related classes: /// - UnityToolRegistry: Source of tool information /// - ToolInfo: Data structure for tool details /// - GetToolDetailsResponse: Type-safe response structure /// [McpTool( Description = "Retrieve detailed information about all registered Unity MCP tools", DisplayDevelopmentOnly = true )] public class GetToolDetailsTool : AbstractUnityTool { public override string ToolName => "get-tool-details"; protected override Task ExecuteAsync(GetToolDetailsSchema parameters, CancellationToken cancellationToken) { // Type-safe parameter access bool includeDevelopmentOnly = parameters.IncludeDevelopmentOnly; // Get tool registry and retrieve all registered tools UnityToolRegistry registry = CustomToolManager.GetRegistry(); ToolInfo[] allTools = registry.GetRegisteredTools(); // Filter tools based on development-only setting ToolInfo[] filteredTools = allTools; if (!includeDevelopmentOnly) { filteredTools = allTools .Where(tool => !tool.DisplayDevelopmentOnly) .ToArray(); } // Create type-safe response GetToolDetailsResponse response = new GetToolDetailsResponse { Tools = filteredTools }; return Task.FromResult(response); } } }