@Gordon thanks, your help is much appreciated. The reason I was getting results with NRF.setScanRespose was probably because I am using Google's "Nearby" (Settings->Google->Nearby on android), which is scanning for Eddystone links, but I see now that it's not exactly what I need.
For reasons I don't understand, the above code doesn't work correctly for me (have tried it on 2 pucks). Manufacturer data are advertised properly, but I don't see the url. I am checking with nRF Connect and 0x0590 is there, very rarely 0xFEAA may pop up very shortly and disappear again. Same on Nearby, if I refresh constantly I may see it at some point, but it's gone once I refresh again. EspruinoHub on console (PuTTY) is showing feaa and the link for the puck though.
Stringifying data is not the way to go, I know, but I start using it when I couldn't figure out how to send code to change color on a ble bulb from one puck to another, got a little confused with all the conversions among different bases. But it's kind of working, slice and parseInt ftw. I still cannot understand though how you can represent, lets say 1000 states, with 255 numbers.