Rather than allowing any CL S-expression (except that all symbols must be keywords), I propose that you allow only a more restricted variety of S-expressions so that they can be readily read and processed in any other language, while being compatible with a whole bunch of Lisp's read (without full validation) and print/write functions.
Code is provided to parse POSE in many languages, but the CL is not up to date, as it does not yet handle keywords, only colon-free identifiers. (But of course there is no reason not to use your own code if you want.)