What I like to do is perform a similar transaction via web3 (say MetaMask) and inspect the data being sent when using the protocols UI. This will give you an idea of what arguments are being used and what data is being sent (both encoded and decoded).
Is the contract you are interacting with your own or another protocols contracts (like pancakeswap)? If the latter, then you can mimick the txn on a testnet via the protocols frontend UI. For example, if you wanted to create a pool, you can create test tokens and try to then add them via there frontend UI. This will also help you see what data is being used and called via metamask and testnet explorer).
You cant execute the add function if you are not the owner. I have the contracts deployed on the testnet. How do you create the pool using the frontend? I have deployed the frontend of Pancakeswap. I used the frontend to add liquidity and get the lp address.