Language designers and compiler developers in need of an ABI find themselves caught between two extremes: an ABI can be specified informally with prose and validated by inspection and testing, or it can be specified rigorously with a realizability model and validated by proofs. We propose a middle ground where we define a realizability model for RichWasm, indexed by RichWasm types and inhabited by WebAssembly computations—doing all the work that requires expertise in semantic models and program logics—and source-language compilers can benefit from the memory-safe ABI specified by the model by simply building a type-preserving compiler to RichWasm. Now, if there is a type-preserving compiler from a source language to RichWasm, the ABI for any source type $\tau$ is the interpretation $\llbracket\tau^+\rrbracket$ in our realizability model, where $\tau^+$ is the type translation for $\tau$. In other words, by writing a type-preserving compiler to RichWasm, a WebAssembly ABI falls out “for free!”