Generally speaking, the recommended pattern is something like this:
1. compose and execute WQL on the server (in cards)
2. request a json response to that query (typically by adding ".json" to a search card)
For #1 you can consider passing variable names (see $keyword in search bar) or daisy-chaining search cards (eg ratings+gametype+whatever).
For #2, you might look at some of the views here, especially atom.
Neither of these are well documented, in part because the API is not considered finalized. So there's a chance future upgrades may require some code refactoring, but we are deeply committed to taking our support for this kind of work much further.