That works if you have the device's exact name, or exact UUID. It doesn't work if you know the device by only part of its name.
I would solve this problem like so:
mgmt_cli --format json -r true show gateways-and-servers limit 500 details-level full \
| jq -c '.objects[]|.' \
| egrep "<filter goes here>" \
| xargs -L 1 jq .
'details-level full' gives us more information about the object like the comment, which might be useful for filtering. 'limit 500' is as high as that option goes, so the command would need to be repeated with an offset if there are more than 500 gateway-and-server objects.
The `jq -c '.objects[]|.'` splits up the items in the 'objects' list in the original JSON, then prints the whole object in compact form (one full object per line).
You can then filter in any way you want. I've used egrep here, but there are other options. Since the whole object is one line, you just have to return lines which match the desired filter. Easy.
Finally, since the grep may return many lines but jq wants to get a single array or object, I use xargs to carve grep's output and feed it one object at a time to jq for pretty print. You can use a longer jq expression here instead of the . if you only want certain fields of the objects.