The 38-year-old infielder got a one-year contract that will be worth $1.1 million if he makes the big leagues. There is an additional $400,000 in performance bonuses.
The six-time All-Star last played in the majors in 2011 with San Francisco, hitting .239 with four home runs and 26 RBIs in 91 games.
"I'm very pleased with this. The contract with the Royals is a done deal," Tejada told The Associated Press. " I'm going to try to help this team and their younger players. I'm so happy because this is what I was aiming for, a chance to get back to the majors."
Tejada played 36 games in Triple-A for Baltimore last season, batting .259 with no homers and 18 RBIs. He was released from his minor league deal on June 25 at his own request when he didn't see an opportunity to play for the Orioles in the near future.
Tejada has been playing for the Aguilas Cibaenas in the Dominican Republic Winter League. He says he lost 15 pounds during the summer.
"I believe I can be valuable for Kansas City in different facets. They haven't told me what specific role they have in mind for me, but what is important is that I'm healthy and I know that I can help," he said.
Tejada spent 15 seasons in the majors and was the 2002 AL MVP with Oakland. He is a career .285 hitter with 304 homers and 1,282 RBIs with the A's, Orioles, Houston, San Diego and the Giants.