diff --git a/source/RobotAPI/libraries/armem/client/Query.h b/source/RobotAPI/libraries/armem/client/Query.h
index bee999f073bc57cd53db0b9031cba9feee1cfbb7..8e14c5b5a7aa22ea260779c95bb63a24891cc29b 100644
--- a/source/RobotAPI/libraries/armem/client/Query.h
+++ b/source/RobotAPI/libraries/armem/client/Query.h
@@ -1,44 +1,60 @@
 #pragma once
 
-// RobotAPI
 #include <RobotAPI/interface/armem/query.h>
-
-#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h>
 #include <RobotAPI/libraries/armem/core/SuccessHeader.h>
 #include <RobotAPI/libraries/armem/core/query/DataMode.h>
 #include <RobotAPI/libraries/armem/core/query/QueryTarget.h>
+#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h>
 #include <RobotAPI/libraries/armem/core/wm/memory_definitions.h>
 
-
 namespace armarx::armem::client::query
 {
     // #include <RobotAPI/libraries/armem/client/query/Builder.h>
     class Builder;
-}
+} // namespace armarx::armem::client::query
 
 namespace armarx::armem::client
 {
     using QueryBuilder = query::Builder;
 
-
     /**
-     * @brief An update of an entity for a specific point in time.
+     * @brief A query for parts of a memory.
      */
     struct QueryInput
     {
+        /**
+         * @brief The queries.
+         */
         armem::query::data::MemoryQuerySeq memoryQueries;
+        /**
+         * @brief Whether entity instance data (i.e., their payload) should be transferred.
+         */
         armem::query::DataMode dataMode;
 
         static QueryInput fromIce(const armem::query::data::Input& ice);
         armem::query::data::Input toIce() const;
     };
 
-
     /**
-     * @brief Result of an `EntityUpdate`.
+     * @brief Result of a `QueryInput`.
+     *
+     * If `success` is false, an error occurred during the query. In this case, `errorMessage` can
+     * contain more information.
+     *
+     * @note An empty result is valid, i.e. successful. In other words, an empty result is not a
+     * failure. To check whether any entity snapshot matched the query, use `memory.hasSnapshots()`
+     * or `memory.hasInstances()`.
+     *
+     * @see wm::Memory::hasInstances(), wm::Memory::hasSnapshots()
      */
     struct QueryResult : public detail::SuccessHeader
     {
+        /**
+         * @brief The slice of the memory that matched the query.
+         *
+         * To check whether the memory contains any snapshots or instances, use
+         * `memory.hasSnapshots()` or `memory.hasInstances()`.
+         */
         wm::Memory memory;
 
 
@@ -48,11 +64,10 @@ namespace armarx::armem::client
         friend std::ostream& operator<<(std::ostream& os, const QueryResult& rhs);
     };
 
-
     void toIce(armem::query::data::Input& ice, const QueryInput& input);
     void fromIce(const armem::query::data::Input& ice, QueryInput& input);
 
     void toIce(armem::query::data::Result& ice, const QueryResult& result);
     void fromIce(const armem::query::data::Result& ice, QueryResult& result);
 
-}
+} // namespace armarx::armem::client