The bpy interface for working with catalogs is basically unusable for automating tasks.
I have a large asset repository that I’m creating programmatically using Python scripts, but there’s no sane way to do simple catalog operations like adding a new collection to the current file and moving assets into them. The only way to interact with the catalog system is via the ops module which is not designed for real automation.
I agree that a proper api to work with asset catalogs would be very helpful!
In the meantime, I made this helper file to make creating and modifying the underlying blender_assets.cats.txt easier, It might also be helpful for your project: