I think that all reasonable people now agree that buy() vs. retrieve_item() is not really an issue; scripts just need to do the right thing. And if you want to always use an NPC rather than the mall (presumably because you want to spend extra Meat some of the time), you can use the little ASH function I posted.
The current complaints have moved to the "buy" command. Here is a sample usage:
> buy 1 pog #11
Searching for "pog #11 (Naughty Sorceress)"...
Search complete.
Purchasing pog #11 (Naughty Sorceress) (1 @ 8,975)...
Purchases complete.
Now, I am out of Ronin (and I have 8 more Yearbook camera pictures to turn in, so it will be a while before I'm back), so I can't see what it says for mall purchases in that case, but I think it would be reasonable for the output to say something like:
Purchasing pog #11 (Naughty Sorceress) (1 @ 8,975)…
(8,975 Meat spent from storage, 1 pog #11 (Naughty Sorceress) sent to storage)...
Purchases complete.
You DO get that kind of feedback from KoL if you buy using the native interface.