WARNING: This is currently experimental, and not sufficiently tested.
Use at your own risk.
You can lock an ordinal, creating an on-chain public listing for sale. If the listing value is transferred to the specified address, the ordinal is released to the destination given by the buyer. The listing can be canceled.
Below is the sCrypt contract. Provide a payment output, and a sellec pubkey and compile the contract.