scsynth
depends extremely heavily on OSC - I'd imagine there's basically no way to use it without OSC. It's baked in to the system design, it's not just an external add-on to control it.
Note that you don't need to use OSC over TCP/UDP, but that's the standard setup. When we ported scsynth
to Android, for example, we controlled it by sending OSC commands via Android's "intents". If you implemented a CoAP wrapper, I'd imagine you would end up invoking OSC commands in-memory.
Here is the SuperCollider server OSC command reference which shows the entire list of commands the server knows. Also the SC guide to OSC communication.