Sending items from the client to the server through a remote event does not replicate them across the client/server boundary (that would cause a huuuge security risk).
Replicating this will be a very big pain in the ass since “Pet” is a model and you’d have to pass through way to many variables in order to recreate it, HOWEVER if this model is stored on the server somewhere, you can pass along the Pet’s name (Pet.Name) as opposed to passing along the pet model itself: value types that aren’t Instances can be passed through RemoteEvents and be replicated to the server so you are free to include strings, integers, etc in your parameters.
Updated my reply - forgot to include part of the sentence there!
Userdatas can be passed through to the server, but Instances (which are userdatas) will not be replicated from client to the server when passed through a remote event.