Why is it that this version doesn't work how I want it?
function FE.Add.OnServerInvoke(player, slot)
But here when I invent the "idk" between player and slot, everything works well?
function FE.Add.OnServerInvoke(player, idk, slot)
What could I be not understanding to have this issue?

2 comments
You're passing an extra value before the one you want. On the client side what you want is ...... :InvokeServer(Slot), with nothing before "Slot". The "player" part of onServerInvoke is already handled by the game, so you don't need to pass the player manually.
Thanks! That was the issue!