We can't provide the pxr::UsdPrim object directly because USD types can't be part of C++ function signatures that are automatically exposed to scripting languages. Lucikly we can use UsdUtils' stage cache to make sure that C++ and e.g. Python are still referencing the same USD Stage in memory, so that we can e.g. use these functions to convert data within stages created via Python.