@@ -1643,3 +1643,48 @@ func TestFilteringOrder(t *testing.T) {
16431643 }
16441644 }
16451645}
1646+
1647+ func TestForMCPRequest_ToolsCall_FeatureFlaggedVariants (t * testing.T ) {
1648+ // Simulate the get_job_logs scenario: two tools with the same name but different feature flags
1649+ // - "get_job_logs" with FeatureFlagDisable (available when flag is OFF)
1650+ // - "get_job_logs" with FeatureFlagEnable (available when flag is ON)
1651+ tools := []ServerTool {
1652+ mockToolWithFlags ("get_job_logs" , "actions" , true , "" , "consolidated_flag" ), // disabled when flag is ON
1653+ mockToolWithFlags ("get_job_logs" , "actions" , true , "consolidated_flag" , "" ), // enabled when flag is ON
1654+ mockTool ("other_tool" , "actions" , true ),
1655+ }
1656+
1657+ // Test 1: Flag is OFF - first tool variant should be available
1658+ regFlagOff := NewBuilder ().
1659+ SetTools (tools ).
1660+ WithToolsets ([]string {"all" }).
1661+ Build ()
1662+ filteredOff := regFlagOff .ForMCPRequest (MCPMethodToolsCall , "get_job_logs" )
1663+ availableOff := filteredOff .AvailableTools (context .Background ())
1664+ if len (availableOff ) != 1 {
1665+ t .Fatalf ("Flag OFF: Expected 1 tool, got %d" , len (availableOff ))
1666+ }
1667+ if availableOff [0 ].FeatureFlagDisable != "consolidated_flag" {
1668+ t .Errorf ("Flag OFF: Expected tool with FeatureFlagDisable, got FeatureFlagEnable=%q, FeatureFlagDisable=%q" ,
1669+ availableOff [0 ].FeatureFlagEnable , availableOff [0 ].FeatureFlagDisable )
1670+ }
1671+
1672+ // Test 2: Flag is ON - second tool variant should be available
1673+ checker := func (_ context.Context , flag string ) (bool , error ) {
1674+ return flag == "consolidated_flag" , nil
1675+ }
1676+ regFlagOn := NewBuilder ().
1677+ SetTools (tools ).
1678+ WithToolsets ([]string {"all" }).
1679+ WithFeatureChecker (checker ).
1680+ Build ()
1681+ filteredOn := regFlagOn .ForMCPRequest (MCPMethodToolsCall , "get_job_logs" )
1682+ availableOn := filteredOn .AvailableTools (context .Background ())
1683+ if len (availableOn ) != 1 {
1684+ t .Fatalf ("Flag ON: Expected 1 tool, got %d" , len (availableOn ))
1685+ }
1686+ if availableOn [0 ].FeatureFlagEnable != "consolidated_flag" {
1687+ t .Errorf ("Flag ON: Expected tool with FeatureFlagEnable, got FeatureFlagEnable=%q, FeatureFlagDisable=%q" ,
1688+ availableOn [0 ].FeatureFlagEnable , availableOn [0 ].FeatureFlagDisable )
1689+ }
1690+ }
0 commit comments