diff --git a/lib/cli.py b/lib/cli.py
index c3780380b0c3e5607462c7033ef7a1a41273eb91..31bc0b7ccb49d419b8b41e6d84ef03139766763e 100644
--- a/lib/cli.py
+++ b/lib/cli.py
@@ -391,17 +391,13 @@ def SubmitOpCode(op, proc=None, feedback_fn=None):
 def SubmitJob(job, cl=None):
   if cl is None:
     cl = luxi.Client()
-  jid = cl.SubmitJob(job)
-  return jid
+  return cl.SubmitJob(job)
 
 
 def SubmitQuery(data, cl=None):
   if cl is None:
     cl = luxi.Client()
-  result = cl.Query(data)
-  if not result['success']:
-    raise ValueError(result)
-  return result['result']
+  return cl.Query(data)
 
 
 def FormatError(err):
diff --git a/lib/luxi.py b/lib/luxi.py
index 785543467f4b130e4d18509c3d70fa934866cb87..5944a43d44d01d9bff89aa0dd0e5d0ed18e838c1 100644
--- a/lib/luxi.py
+++ b/lib/luxi.py
@@ -244,6 +244,10 @@ class Client(object):
       data = simplejson.loads(result)
     except Exception, err:
       raise ProtocolError("Error while deserializing response: %s" % str(err))
+    if (not isinstance(data, dict) or
+        'success' not in data or
+        'result' not in data):
+      raise DecodingError("Invalid response from server: %s" % str(data))
     return data
 
   def SubmitJob(self, job):