That's where I'm coming from. Yet I think it's worth examining what a node would need to support wallet interaction. Certainly, examination of the UTXO set would allow simple wallet functionality fairly easily. Transaction history means either a rescan of the blockchain (either by the wallet or as an internal function of the node software) or keeping an indexed database of historical transactions. The wallet scan is simplest, probably most privacy preserving but likely to be the most resource intensive and slow. Scanning by the node, mildly resource intensive, potentially privacy invasive and also slow. Indexed database would be fastest but require dedicated storage.
I'm just picking this part, but reading the conversation between you and @justus-ranvier.26 is very interesting as I've been thinking along the same lines for a while.
My preference is a wallet that trusts the node and leaves all the validation to the node. This avoids the UTXO interaction you want. But I'm certainly not against UTXO introspection, that API should definitely add a lot of usability. One thing to remember is that the UTXO is actually a fragment of the one that we inherited from Core.
The pure UTXO is nothing but a list of transaction-id and output-index. Core made the design mistake of adding to this the actual output script (which caused the memory issues that we saw explained on breaking bitcoin), without this output script the UTXO is substantially smaller.
There are a lot of such design issues that Core gave us and which make our lives harder today.
I swear I need to start diagramming this.
My personal design is one best explained by saying we should remove the concept of the tx-index from the node and instead build on top of the node a data-warehouse to actually store links like the tx-index. The only addition we need on the node side is that we need an API to get the full transaction based on some meta-data like index-in-block.
I've been working silently on my new project which is meant to realise many of these goals. I no longer call things a 'node', but instead it becomes a 'hub'. The hub is much more humble and has a lot less duties than the full node. And in real Unix philosophy, the hub is intending to be the best at the things it does.
If you want to read more on this idea;
http://floweethehub.com