ESPN's Buster Olney first reported the deal Monday.
The pact is for $5.25 million, but he can make another $1 million in incentives.
Hamilton had been under team control with the Cincinnati Reds for one more season heading into 2019. However, the Reds declined to offer him a contract before the Nov. 30 non-tender deadline, thus making him a free agent.
After the move, Reds general manager Nick Krall indicated the team left its options open regarding a potential return.
"I don't think it closes the door to anything we could do with him," Krall said, per the Cincinnati Enquirer's Bobby Nightengale. "He now can negotiate with other clubs. We just didn't feel that locking him into the budget was a helpful thing for us when pitching is our No. 1 need."
According to Nightengale, Krall also said the Reds didn't have any trade offers for Hamilton. The Athletic's Jayson Stark noted that wasn't always the case:
Jayson Stark @jaysonst
The irony of the #Reds non-tendering Billy Hamilton: I can think of at least 4 teams in last 2-3 years who thought they'd agreed to a trade for him. #Giants #Indians #Mariners #Royals Reds reversed course on all of them, presumably b/c ownership loved Billy. Ended up with zilch
The fact Cincinnati couldn't swing a trade illustrated how much Hamilton's stock has slipped—or at the very least stagnated—in recent years.
After posting a career-high .321 on-base percentage in 2016, Hamilton took a step backward offensively in 2017. He finished with a .247/.299/.335 slash line along with four home runs and 38 RBI. He also struck out 133 times, which were a personal worst.
The 2018 campaign represented another step in the wrong direction. Hamilton struck out 132 times while watching his batting average and slugging percentage fall to .236 and .327, respectively.
The Reds continued to accept his lack of offensive production in large part because he remained one of the better defensive outfielders in MLB.
Among 57 qualified outfielders, he tied for 24th in defensive runs saved (four) and ranked 15th in ultimate zone rating per 150 games (6.0), per FanGraphs. Even though he no longer possesses an elite glove, there's no question he can adequately cover the gaps.
In addition, Hamilton's speed is invaluable in the right situations. He's always a threat to steal, and he has a nearly unmatched ability to take an extra base when the ball is in play. Since entering the league full time in 2014, he's the runaway leader in FanGraphs' baserunning metric, which not only factors in steals but also a player's baserunning during game action.
Despite his value on the basepaths and in the field, Hamilton's low offensive ceiling make it tough to project him as a worthwhile everyday outfielder.
His durability will be another cause for concern.
Between 2015 and 2016, he missed a combined 91 games. He appeared in 139 games in 2017 after a thumb injury sidelined him for a few weeks in September. Since his first full season in the majors in 2014, only twice has Hamilton eclipsed 150 games over an entire year.
MLB.com's Mike Petriello posited a team could get really creative with Hamilton. A manager could have him replace a position player already on base early in a game. Then the team would have him on base at least once and playing in the field for a few innings while minimizing the damage he does through his lack of offense.
Perhaps Ned Yost is willing to experiment with Hamilton's usage because otherwise this isn't a move that is likely to drastically improve Kansas City's outfield.