diff --git a/src/nvidia-gpu/NvidiaGpuMctpVdm.hpp b/src/nvidia-gpu/NvidiaGpuMctpVdm.hpp
index e378cfc..5bb335a 100644
--- a/src/nvidia-gpu/NvidiaGpuMctpVdm.hpp
+++ b/src/nvidia-gpu/NvidiaGpuMctpVdm.hpp
@@ -10,6 +10,9 @@
 
 #include <cstdint>
 #include <span>
+#include <string>
+#include <variant>
+#include <vector>
 
 namespace gpu
 {
@@ -33,6 +36,7 @@
     READ_THERMAL_PARAMETERS = 0x02,
     GET_CURRENT_POWER_DRAW = 0x03,
     GET_CURRENT_ENERGY_COUNTER = 0x06,
+    GET_INVENTORY_INFORMATION = 0x0C,
     GET_VOLTAGE = 0x0F,
 };
 
@@ -41,6 +45,49 @@
     DEVICE_GPU = 0
 };
 
+enum class InventoryPropertyId : uint8_t
+{
+    BOARD_PART_NUMBER = 0,
+    SERIAL_NUMBER = 1,
+    MARKETING_NAME = 2,
+    DEVICE_PART_NUMBER = 3,
+    FRU_PART_NUMBER = 4,
+    MEMORY_VENDOR = 5,
+    MEMORY_PART_NUMBER = 6,
+    MAX_MEMORY_CAPACITY = 7,
+    BUILD_DATE = 8,
+    FIRMWARE_VERSION = 9,
+    DEVICE_GUID = 10,
+    INFOROM_VERSION = 11,
+    PRODUCT_LENGTH = 12,
+    PRODUCT_WIDTH = 13,
+    PRODUCT_HEIGHT = 14,
+    RATED_DEVICE_POWER_LIMIT = 15,
+    MIN_DEVICE_POWER_LIMIT = 16,
+    MAX_DEVICE_POWER_LIMIT = 17,
+    MAX_MODULE_POWER_LIMIT = 18,
+    MIN_MODULE_POWER_LIMIT = 19,
+    RATED_MODULE_POWER_LIMIT = 20,
+    DEFAULT_BOOST_CLOCKS = 21,
+    DEFAULT_BASE_CLOCKS = 22,
+    DEFAULT_EDPP_SCALING = 23,
+    MIN_EDPP_SCALING = 24,
+    MAX_EDPP_SCALING = 25,
+    MIN_GRAPHICS_CLOCK = 26,
+    MAX_GRAPHICS_CLOCK = 27,
+    MIN_MEMORY_CLOCK = 28,
+    MAX_MEMORY_CLOCK = 29,
+    INFINIBAND_GUID = 30,
+    RACK_GUID = 31,
+    RACK_SLOT_NUMBER = 32,
+    COMPUTE_SLOT_INDEX = 33,
+    NODE_INDEX = 34,
+    GPU_NODE_ID = 35,
+    NVLINK_PEER_TYPE = 36,
+    FPGA_IMAGE_VERSION = 128,
+    FPGA_MCTP_BRIDGE_UUID = 129,
+};
+
 struct QueryDeviceIdentificationRequest
 {
     ocp::accelerator_management::CommonRequest hdr;
@@ -103,6 +150,21 @@
     ocp::accelerator_management::CommonResponse hdr;
     uint32_t voltage;
 } __attribute__((packed));
+struct GetInventoryInformationRequest
+{
+    ocp::accelerator_management::CommonRequest hdr;
+    uint8_t property_id;
+} __attribute__((packed));
+
+constexpr size_t MAX_INVENTORY_DATA_SIZE = 256;
+
+struct GetInventoryInformationResponse
+{
+    ocp::accelerator_management::CommonResponse hdr;
+    uint8_t data[MAX_INVENTORY_DATA_SIZE];
+} __attribute__((packed));
+
+using InventoryInfo = std::variant<std::string, std::vector<uint8_t>>;
 
 int packHeader(const ocp::accelerator_management::BindingPciVidInfo& hdr,
                ocp::accelerator_management::BindingPciVid& msg);
@@ -154,4 +216,12 @@
 int decodeGetVoltageResponse(std::span<const uint8_t> buf,
                              ocp::accelerator_management::CompletionCode& cc,
                              uint16_t& reasonCode, uint32_t& voltage);
+int encodeGetInventoryInformationRequest(uint8_t instanceId, uint8_t propertyId,
+                                         std::span<uint8_t> buf);
+
+int decodeGetInventoryInformationResponse(
+    std::span<const uint8_t> buf,
+    ocp::accelerator_management::CompletionCode& cc, uint16_t& reasonCode,
+    InventoryPropertyId propertyId, InventoryInfo& info);
+
 } // namespace gpu
