diff --git a/lib/opcodes.py b/lib/opcodes.py
index e266079b02d2a7c94249d3d4687841e262ca9e6c..f805b5611c2d5f643d387677270007157740ea21 100644
--- a/lib/opcodes.py
+++ b/lib/opcodes.py
@@ -1741,6 +1741,7 @@ class OpTagsGet(OpCode):
     # Name is only meaningful for nodes and instances
     ("name", ht.NoDefault, ht.TMaybeString, None),
     ]
+  OP_RESULT = ht.TListOf(ht.TNonEmptyString)
 
 
 class OpTagsSearch(OpCode):
@@ -1749,6 +1750,10 @@ class OpTagsSearch(OpCode):
   OP_PARAMS = [
     ("pattern", ht.NoDefault, ht.TNonEmptyString, None),
     ]
+  OP_RESULT = ht.TListOf(ht.TAnd(ht.TIsLength(2), ht.TItems([
+    ht.TNonEmptyString,
+    ht.TNonEmptyString,
+    ])))
 
 
 class OpTagsSet(OpCode):
@@ -1759,6 +1764,7 @@ class OpTagsSet(OpCode):
     # Name is only meaningful for nodes and instances
     ("name", ht.NoDefault, ht.TMaybeString, None),
     ]
+  OP_RESULT = ht.TNone
 
 
 class OpTagsDel(OpCode):
@@ -1769,6 +1775,7 @@ class OpTagsDel(OpCode):
     # Name is only meaningful for nodes and instances
     ("name", ht.NoDefault, ht.TMaybeString, None),
     ]
+  OP_RESULT = ht.TNone
 
 
 # Test opcodes
diff --git a/test/ganeti.opcodes_unittest.py b/test/ganeti.opcodes_unittest.py
index b94ab1432f5092e7c7f5199f95df1138f7e00b59..7e6cb6e340424ba9f4115f1742f931245927c915 100755
--- a/test/ganeti.opcodes_unittest.py
+++ b/test/ganeti.opcodes_unittest.py
@@ -38,10 +38,6 @@ import testutils
 #: Unless an opcode is included in the following list it must have a result
 #: check of some sort
 MISSING_RESULT_CHECK = frozenset([
-  opcodes.OpTagsDel,
-  opcodes.OpTagsGet,
-  opcodes.OpTagsSearch,
-  opcodes.OpTagsSet,
   opcodes.OpTestAllocator,
   opcodes.OpTestDelay,
   opcodes.OpTestDummy,