Free-agent outfielder Carlos Beltran has agreed to a three-year, $45 million deal with the New York Yankees, sources confirmed to ESPN.com on Friday night. 

Beltran, 36, hit .296 with 24 home runs and 84 RBIs in 145 games this past season for the NL champion St. Louis Cardinals.