@@ -472,7 +472,7 @@ func New(
472472 for _ , tool := range optimizerTools {
473473 mcpServer .AddTool (tool .Tool , tool .Handler )
474474 }
475- logger .Info ("Optimizer tools registered globally (optim_find_tool, optim_call_tool )" )
475+ logger .Info ("Optimizer tools registered globally (find_tool, call_tool )" )
476476
477477 // Ingest discovered backends into optimizer database (for semantic search)
478478 // Note: Backends are already discovered and registered with vMCP regardless of optimizer
@@ -577,7 +577,8 @@ func New(
577577 // Add composite tools to capabilities
578578 // Composite tools are static (from configuration) and not discovered from backends
579579 // They are added here to be exposed alongside backend tools in the session
580- if len (srv .workflowDefs ) > 0 {
580+ // When optimizer is enabled, composite tools are NOT exposed directly - they're accessible via find_tool/call_tool
581+ if srv .optimizerIntegration == nil && len (srv .workflowDefs ) > 0 {
581582 compositeTools := convertWorkflowDefsToTools (srv .workflowDefs )
582583
583584 // Validate no conflicts between composite tool names and backend tool names
@@ -594,6 +595,10 @@ func New(
594595 logger .Debugw ("added composite tools to session capabilities" ,
595596 "session_id" , sessionID ,
596597 "composite_tool_count" , len (compositeTools ))
598+ } else if srv .optimizerIntegration != nil && len (srv .workflowDefs ) > 0 {
599+ logger .Debugw ("composite tools not exposed directly in optimizer mode (accessible via find_tool/call_tool)" ,
600+ "session_id" , sessionID ,
601+ "composite_tool_count" , len (srv .workflowDefs ))
597602 }
598603
599604 // Store routing table in VMCPSession for subsequent requests
@@ -616,7 +621,7 @@ func New(
616621 "prompt_count" , len (caps .RoutingTable .Prompts ))
617622
618623 // When optimizer is enabled, we should NOT inject backend tools directly.
619- // Instead, only optimizer tools (optim_find_tool, optim_call_tool ) will be exposed.
624+ // Instead, only optimizer tools (find_tool, call_tool ) will be exposed.
620625 // Backend tools are still discovered and stored for optimizer ingestion,
621626 // but not exposed directly to clients.
622627 if srv .optimizerIntegration == nil {
@@ -634,9 +639,9 @@ func New(
634639 "resource_count" , len (caps .Resources ))
635640 } else {
636641 // Optimizer tools already registered above (early registration)
637- // Backend tools will be accessible via optim_find_tool and optim_call_tool
642+ // Backend tools will be accessible via find_tool and call_tool
638643
639- // Inject resources (but not backend tools)
644+ // Inject resources (but not backend tools or composite tools )
640645 if len (caps .Resources ) > 0 {
641646 sdkResources := srv .capabilityAdapter .ToSDKResources (caps .Resources )
642647 if err := srv .mcpServer .AddSessionResources (sessionID , sdkResources ... ); err != nil {
0 commit comments