Friday afternoon the Seattle Mariners and St. Louis Cardinals got together for the rarest trade of them all: a prospect-for-prospect swap.

The Mariners have sent Triple-A outfielder Tyler O'Neill to the Cardinals for Triple-A left-hander Marco Gonzales, both teams have announced. It's a straight one-for-one swap.

"Marco is a quality athlete with high character and a strong pitching pedigree who we feel fits our roster well in both the near and long term," said Mariners general manager Jerry Dipoto in a statement. "We find his current performance, preparedness and proximity to the Major Leagues to be very appealing traits in a pitcher, particularly a young lefty who is now under club control through the 2023 season."

O'Neill, 22, is currently ranked as the 29th-best prospect in baseball, according to MLB.com. He is hitting .244/.328/.479 with 21 doubles and 19 home runs in 93 Triple-A games so far this year. O'Neill broke out in Double-A last season by putting up a .293/.374/.508 batting line with 26 doubles and 24 home runs in 130 games.

Here is a snippet of MLB.com's scouting report:

O'Neill's strength and explosive bat speed generate plus-plus raw power from line to line, and he showed a vastly improved ability to find balance between that and his natural hitting ability in 2016. He's also made strides with his plate discipline and pitch recognition, resulting in drastically improved strikeout and walk rates ... O'Neill's above-average arm strength is a clean fit in right field, where his athleticism makes him an aggressive but average defender.

The 25-year-old Gonzales returned following Tommy John surgery back in May. He is currently in Triple-A and has a 2.90 ERA with 57 strikeouts and only 17 walks in 68 1/3 innings. Gonzales made one spot for St. Louis earlier this year and has a 5.53 ERA in 40 2/3 career big-league innings spread across 2014-17. MLB.com currently ranks him as the 18th-best prospect in the Cardinals system. Here's a piece of their scouting report:

Gonzales pitched with an average fastball that played up because of his command and because of his plus changeup he could throw in any count to any hitter. His curve was his third pitch, but it looked like it was going to be Major League average as well. Gonzales will be given every chance to show he can once again be a reliable mid- to back-of-the-rotation starter.

Gonzales is a former top-100 prospect himself. His stock is down right now because of the Tommy John surgery. Now that he's healthy and showing the same stuff as before elbow reconstruction, he'll rise back up prospect lists. I know trading the 29th-best prospect in baseball (O'Neill) for the 18th-best prospect in an organization (Gonzales) seems very lopsided, but those rankings were compiled while Gonzales was rehabbing. Now that he's healthy, his stock is on the rise.

It's not often teams get together for prospect-for-prospect trades simply because it's so difficult to agree on value. Prospects are like kids. Everyone loves their own more than everyone else's. In this case, both teams dealt from a position of depth to address a position of need. The Mariners have a ton of outfielders and need starters. The Cardinals have plenty of arms and need outfield bats. It's a match made in prospect trade heaven.