Barnes' contract was selected by Cleveland on Tuesday.
The 32-year-old hasn't played in the majors since 2016 and owns a .242/.289/.356 slash line over parts of five seasons. He'll be a reserve outfielder for the Indians over the final month of the season.