Instead of a graphical 'pipe building' interface, the way we did mashups was to have embedded scripts in the XML that ran in a server-side JavaScript environment (SpiderMonkey) extended with custom syntax and language extensions we called GrazrScript (and namespaced in the file as tags). You could do some pretty amazing stuff with it by writing small amounts of server-side javascript. We had an interface for http querying, accessing and manipulating normalized feed representations.
You could have these files call other grazrscript files and create 'pipes' of functions (more directly like unix pipes).
I like to tell people we were doing embedded, server-side, javascript years before it was cool. :)