I was thinking about using a rollup for this. The rollup would also contain a simple state transition logic to manage different “remote” calls (success/failure). The user can prelock the maximum gas on the rollup (like in what we proposed in Trustless and secure cross zk-Rollup transfer protocol) and pay once the real cost of the call is known. Exploring this is in our todo list.