The 29-year-old hit .278 with three doubles and a home run in five games for the Royals last year and made $600,000. He batted .233 with 17 homers and 44 RBIs in 78 games for Triple-A Omaha.
Kansas City claimed Hayes off waivers from the Miami Marlins in November 2012.
His agreement was announced Friday. He can make an additional $20,000 in performance bonuses.