> ## 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. # MessagesRequestToolUnion ## Supported Types ### ToolCustom ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionToolCustom(components.ToolCustom{/* values here */}) ``` ### ToolBash20250124 ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionToolBash20250124(components.ToolBash20250124{/* values here */}) ``` ### ToolTextEditor20250124 ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionToolTextEditor20250124(components.ToolTextEditor20250124{/* values here */}) ``` ### ToolWebSearch20250305 ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionToolWebSearch20250305(components.ToolWebSearch20250305{/* values here */}) ``` ### ToolWebSearch20260209 ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionToolWebSearch20260209(components.ToolWebSearch20260209{/* values here */}) ``` ### ToolAdvisor20260301 ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionToolAdvisor20260301(components.ToolAdvisor20260301{/* values here */}) ``` ### BashServerTool ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionBashServerTool(components.BashServerTool{/* values here */}) ``` ### DatetimeServerTool ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionDatetimeServerTool(components.DatetimeServerTool{/* values here */}) ``` ### ImageGenerationServerToolOpenRouter ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionImageGenerationServerToolOpenRouter(components.ImageGenerationServerToolOpenRouter{/* values here */}) ``` ### MessagesSearchModelsServerTool ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionMessagesSearchModelsServerTool(components.MessagesSearchModelsServerTool{/* values here */}) ``` ### WebFetchServerTool ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionWebFetchServerTool(components.WebFetchServerTool{/* values here */}) ``` ### OpenRouterWebSearchServerTool ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionOpenRouterWebSearchServerTool(components.OpenRouterWebSearchServerTool{/* values here */}) ``` ### MessagesRequestTool ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionMessagesRequestTool(components.MessagesRequestTool{/* values here */}) ``` ### AnthropicToolSearchToolBm25 ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionAnthropicToolSearchToolBm25(components.AnthropicToolSearchToolBm25{/* values here */}) ``` ### AnthropicToolSearchToolRegex ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionAnthropicToolSearchToolRegex(components.AnthropicToolSearchToolRegex{/* values here */}) ``` ### ShellServerToolOpenRouter ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionShellServerToolOpenRouter(components.ShellServerToolOpenRouter{/* values here */}) ``` ### ToolSearchServerTool ```go theme={null} messagesRequestToolUnion := components.CreateMessagesRequestToolUnionToolSearchServerTool(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 messagesRequestToolUnion.Type { case components.MessagesRequestToolUnionTypeToolCustom: // messagesRequestToolUnion.ToolCustom is populated case components.MessagesRequestToolUnionTypeToolBash20250124: // messagesRequestToolUnion.ToolBash20250124 is populated case components.MessagesRequestToolUnionTypeToolTextEditor20250124: // messagesRequestToolUnion.ToolTextEditor20250124 is populated case components.MessagesRequestToolUnionTypeToolWebSearch20250305: // messagesRequestToolUnion.ToolWebSearch20250305 is populated case components.MessagesRequestToolUnionTypeToolWebSearch20260209: // messagesRequestToolUnion.ToolWebSearch20260209 is populated case components.MessagesRequestToolUnionTypeToolAdvisor20260301: // messagesRequestToolUnion.ToolAdvisor20260301 is populated case components.MessagesRequestToolUnionTypeBashServerTool: // messagesRequestToolUnion.BashServerTool is populated case components.MessagesRequestToolUnionTypeDatetimeServerTool: // messagesRequestToolUnion.DatetimeServerTool is populated case components.MessagesRequestToolUnionTypeImageGenerationServerToolOpenRouter: // messagesRequestToolUnion.ImageGenerationServerToolOpenRouter is populated case components.MessagesRequestToolUnionTypeMessagesSearchModelsServerTool: // messagesRequestToolUnion.MessagesSearchModelsServerTool is populated case components.MessagesRequestToolUnionTypeWebFetchServerTool: // messagesRequestToolUnion.WebFetchServerTool is populated case components.MessagesRequestToolUnionTypeOpenRouterWebSearchServerTool: // messagesRequestToolUnion.OpenRouterWebSearchServerTool is populated case components.MessagesRequestToolUnionTypeMessagesRequestTool: // messagesRequestToolUnion.MessagesRequestTool is populated case components.MessagesRequestToolUnionTypeAnthropicToolSearchToolBm25: // messagesRequestToolUnion.AnthropicToolSearchToolBm25 is populated case components.MessagesRequestToolUnionTypeAnthropicToolSearchToolRegex: // messagesRequestToolUnion.AnthropicToolSearchToolRegex is populated case components.MessagesRequestToolUnionTypeShellServerToolOpenRouter: // messagesRequestToolUnion.ShellServerToolOpenRouter is populated case components.MessagesRequestToolUnionTypeToolSearchServerTool: // messagesRequestToolUnion.ToolSearchServerTool is populated } ```