When to use a protocol
We can use an interface (protocol) for many different reasons - being able to swap out the concrete object used for a mock is one of them - it allows us to isolate the unit being tested; eg for a VM that uses a bunch of services we don't want to test the Service or API layer, we want to see how the VM behaves when it's given certain data.
If a model is just a bunch of values like a simple struct, we get no benefit from hiding it behind an interface.