Centralize tool detection to new Tool.detect() method