> ## Documentation Index > Fetch the complete documentation index at: https://openrouter.ai/docs/llms.txt > Use this file to discover all available pages before exploring further. # ResponsesRequestToolUnion ## Supported Types ### ResponsesRequestToolFunction ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionFunction(components.ResponsesRequestToolFunction{/* values here */}) ``` ### PreviewWebSearchServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionWebSearchPreview(components.PreviewWebSearchServerTool{/* values here */}) ``` ### Preview20250311WebSearchServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionWebSearchPreview20250311(components.Preview20250311WebSearchServerTool{/* values here */}) ``` ### LegacyWebSearchServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionWebSearch(components.LegacyWebSearchServerTool{/* values here */}) ``` ### WebSearchServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionWebSearch20250826(components.WebSearchServerTool{/* values here */}) ``` ### FileSearchServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionFileSearch(components.FileSearchServerTool{/* values here */}) ``` ### ComputerUseServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionComputerUsePreview(components.ComputerUseServerTool{/* values here */}) ``` ### CodeInterpreterServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionCodeInterpreter(components.CodeInterpreterServerTool{/* values here */}) ``` ### McpServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionMcp(components.McpServerTool{/* values here */}) ``` ### ImageGenerationServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionImageGeneration(components.ImageGenerationServerTool{/* values here */}) ``` ### CodexLocalShellTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionLocalShell(components.CodexLocalShellTool{/* values here */}) ``` ### ShellServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionShell(components.ShellServerTool{/* values here */}) ``` ### ApplyPatchServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionApplyPatch(components.ApplyPatchServerTool{/* values here */}) ``` ### CustomTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionCustom(components.CustomTool{/* values here */}) ``` ### NamespaceTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionNamespace(components.NamespaceTool{/* values here */}) ``` ### AdvisorServerToolOpenRouter ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionOpenrouterAdvisor(components.AdvisorServerToolOpenRouter{/* values here */}) ``` ### SubagentServerToolOpenRouter ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionOpenrouterSubagent(components.SubagentServerToolOpenRouter{/* values here */}) ``` ### DatetimeServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionOpenrouterDatetime(components.DatetimeServerTool{/* values here */}) ``` ### FilesServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionOpenrouterFiles(components.FilesServerTool{/* values here */}) ``` ### FusionServerToolOpenRouter ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionOpenrouterFusion(components.FusionServerToolOpenRouter{/* values here */}) ``` ### ImageGenerationServerToolOpenRouter ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionOpenrouterImageGeneration(components.ImageGenerationServerToolOpenRouter{/* values here */}) ``` ### SearchModelsServerToolOpenRouter ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionOpenrouterExperimentalSearchModels(components.SearchModelsServerToolOpenRouter{/* values here */}) ``` ### WebFetchServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionOpenrouterWebFetch(components.WebFetchServerTool{/* values here */}) ``` ### WebSearchServerToolOpenRouter ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionOpenrouterWebSearch(components.WebSearchServerToolOpenRouter{/* values here */}) ``` ### ApplyPatchServerToolOpenRouter ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionOpenrouterApplyPatch(components.ApplyPatchServerToolOpenRouter{/* values here */}) ``` ### BashServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionOpenrouterBash(components.BashServerTool{/* values here */}) ``` ### ShellServerToolOpenRouter ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionOpenrouterShell(components.ShellServerToolOpenRouter{/* values here */}) ``` ### ToolSearchServerTool ```go theme={null} responsesRequestToolUnion := components.CreateResponsesRequestToolUnionOpenrouterToolSearch(components.ToolSearchServerTool{/* values here */}) ``` ## Union Discrimination Use the `Type` field to determine which variant is active, then access the corresponding field: ```go theme={null} switch responsesRequestToolUnion.Type { case components.ResponsesRequestToolUnionTypeFunction: // responsesRequestToolUnion.ResponsesRequestToolFunction is populated case components.ResponsesRequestToolUnionTypeWebSearchPreview: // responsesRequestToolUnion.PreviewWebSearchServerTool is populated case components.ResponsesRequestToolUnionTypeWebSearchPreview20250311: // responsesRequestToolUnion.Preview20250311WebSearchServerTool is populated case components.ResponsesRequestToolUnionTypeWebSearch: // responsesRequestToolUnion.LegacyWebSearchServerTool is populated case components.ResponsesRequestToolUnionTypeWebSearch20250826: // responsesRequestToolUnion.WebSearchServerTool is populated case components.ResponsesRequestToolUnionTypeFileSearch: // responsesRequestToolUnion.FileSearchServerTool is populated case components.ResponsesRequestToolUnionTypeComputerUsePreview: // responsesRequestToolUnion.ComputerUseServerTool is populated case components.ResponsesRequestToolUnionTypeCodeInterpreter: // responsesRequestToolUnion.CodeInterpreterServerTool is populated case components.ResponsesRequestToolUnionTypeMcp: // responsesRequestToolUnion.McpServerTool is populated case components.ResponsesRequestToolUnionTypeImageGeneration: // responsesRequestToolUnion.ImageGenerationServerTool is populated case components.ResponsesRequestToolUnionTypeLocalShell: // responsesRequestToolUnion.CodexLocalShellTool is populated case components.ResponsesRequestToolUnionTypeShell: // responsesRequestToolUnion.ShellServerTool is populated case components.ResponsesRequestToolUnionTypeApplyPatch: // responsesRequestToolUnion.ApplyPatchServerTool is populated case components.ResponsesRequestToolUnionTypeCustom: // responsesRequestToolUnion.CustomTool is populated case components.ResponsesRequestToolUnionTypeNamespace: // responsesRequestToolUnion.NamespaceTool is populated case components.ResponsesRequestToolUnionTypeOpenrouterAdvisor: // responsesRequestToolUnion.AdvisorServerToolOpenRouter is populated case components.ResponsesRequestToolUnionTypeOpenrouterSubagent: // responsesRequestToolUnion.SubagentServerToolOpenRouter is populated case components.ResponsesRequestToolUnionTypeOpenrouterDatetime: // responsesRequestToolUnion.DatetimeServerTool is populated case components.ResponsesRequestToolUnionTypeOpenrouterFiles: // responsesRequestToolUnion.FilesServerTool is populated case components.ResponsesRequestToolUnionTypeOpenrouterFusion: // responsesRequestToolUnion.FusionServerToolOpenRouter is populated case components.ResponsesRequestToolUnionTypeOpenrouterImageGeneration: // responsesRequestToolUnion.ImageGenerationServerToolOpenRouter is populated case components.ResponsesRequestToolUnionTypeOpenrouterExperimentalSearchModels: // responsesRequestToolUnion.SearchModelsServerToolOpenRouter is populated case components.ResponsesRequestToolUnionTypeOpenrouterWebFetch: // responsesRequestToolUnion.WebFetchServerTool is populated case components.ResponsesRequestToolUnionTypeOpenrouterWebSearch: // responsesRequestToolUnion.WebSearchServerToolOpenRouter is populated case components.ResponsesRequestToolUnionTypeOpenrouterApplyPatch: // responsesRequestToolUnion.ApplyPatchServerToolOpenRouter is populated case components.ResponsesRequestToolUnionTypeOpenrouterBash: // responsesRequestToolUnion.BashServerTool is populated case components.ResponsesRequestToolUnionTypeOpenrouterShell: // responsesRequestToolUnion.ShellServerToolOpenRouter is populated case components.ResponsesRequestToolUnionTypeOpenrouterToolSearch: // responsesRequestToolUnion.ToolSearchServerTool is populated } ```