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