diff --git a/phosphor-regulators/src/actions/action_environment.hpp b/phosphor-regulators/src/actions/action_environment.hpp
index f94345a..ce06aff 100644
--- a/phosphor-regulators/src/actions/action_environment.hpp
+++ b/phosphor-regulators/src/actions/action_environment.hpp
@@ -16,11 +16,13 @@
 #pragma once
 
 #include "id_map.hpp"
+#include "pmbus_utils.hpp"
 
 #include <cstddef> // for size_t
 #include <optional>
 #include <stdexcept>
 #include <string>
+#include <vector>
 
 namespace phosphor::power::regulators
 {
@@ -39,6 +41,7 @@
  *   - current volts value (if any)
  *   - mapping from device and rule IDs to the corresponding objects
  *   - rule call stack depth (to detect infinite recursion)
+ *   - sensor readings
  */
 class ActionEnvironment
 {
@@ -70,6 +73,16 @@
     }
 
     /**
+     * Adds the specified sensor reading to this action environment.
+     *
+     * @param reading sensor reading from a regulator rail
+     */
+    void addSensorReading(const pmbus_utils::SensorReading& reading)
+    {
+        sensorReadings.emplace_back(reading);
+    }
+
+    /**
      * Decrements the rule call stack depth by one.
      *
      * Should be used when a call to a rule returns.  Does nothing if depth is
@@ -131,6 +144,16 @@
     }
 
     /**
+     * Returns the sensor readings stored in this action environment.
+     *
+     * @return sensor readings
+     */
+    const std::vector<pmbus_utils::SensorReading>& getSensorReadings() const
+    {
+        return sensorReadings;
+    }
+
+    /**
      * Returns the current volts value, if set.
      *
      * @return current volts value
@@ -201,6 +224,11 @@
      * Rule call stack depth.
      */
     size_t ruleDepth{0};
+
+    /**
+     * Sensor readings for a single regulator rail.
+     */
+    std::vector<pmbus_utils::SensorReading> sensorReadings{};
 };
 
 } // namespace phosphor::power::regulators
diff --git a/phosphor-regulators/src/pmbus_utils.hpp b/phosphor-regulators/src/pmbus_utils.hpp
index 438ee46..4d4b047 100644
--- a/phosphor-regulators/src/pmbus_utils.hpp
+++ b/phosphor-regulators/src/pmbus_utils.hpp
@@ -142,6 +142,22 @@
 };
 
 /**
+ * This struct represents one sensor reading from a device.
+ */
+struct SensorReading
+{
+    /**
+     * Sensor value type that was read.
+     */
+    SensorValueType type;
+
+    /**
+     * Sensor value that was read.
+     */
+    double value;
+};
+
+/**
  * Parse the one byte value of the VOUT_MODE command.
  *
  * VOUT_MODE contains a 'mode' field that indicates the data format used for
diff --git a/phosphor-regulators/test/actions/action_environment_tests.cpp b/phosphor-regulators/test/actions/action_environment_tests.cpp
index efed4d3..4100078 100644
--- a/phosphor-regulators/test/actions/action_environment_tests.cpp
+++ b/phosphor-regulators/test/actions/action_environment_tests.cpp
@@ -18,6 +18,7 @@
 #include "i2c_interface.hpp"
 #include "id_map.hpp"
 #include "mocked_i2c_interface.hpp"
+#include "pmbus_utils.hpp"
 #include "rule.hpp"
 
 #include <cstddef> // for size_t
@@ -58,6 +59,28 @@
     }
 }
 
+TEST(ActionEnvironmentTests, AddSensorReading)
+{
+    IDMap idMap{};
+    ActionEnvironment env{idMap, ""};
+    pmbus_utils::SensorReading reading;
+    reading.type = pmbus_utils::SensorValueType::iout;
+    reading.value = 1;
+    EXPECT_EQ(env.getSensorReadings().size(), 0);
+    env.addSensorReading(reading);
+    EXPECT_EQ(env.getSensorReadings().size(), 1);
+    EXPECT_EQ(env.getSensorReadings()[0].type,
+              pmbus_utils::SensorValueType::iout);
+    EXPECT_EQ(env.getSensorReadings()[0].value, 1);
+    reading.type = pmbus_utils::SensorValueType::vout;
+    reading.value = 2;
+    env.addSensorReading(reading);
+    EXPECT_EQ(env.getSensorReadings().size(), 2);
+    EXPECT_EQ(env.getSensorReadings()[1].type,
+              pmbus_utils::SensorValueType::vout);
+    EXPECT_EQ(env.getSensorReadings()[1].value, 2);
+}
+
 TEST(ActionEnvironmentTests, DecrementRuleDepth)
 {
     IDMap idMap{};
@@ -181,6 +204,28 @@
     EXPECT_EQ(env.getRuleDepth(), 0);
 }
 
+TEST(ActionEnvironmentTests, GetSensorReadings)
+{
+    IDMap idMap{};
+    ActionEnvironment env{idMap, ""};
+    pmbus_utils::SensorReading reading;
+    reading.type = pmbus_utils::SensorValueType::pout;
+    reading.value = 1.3;
+    EXPECT_EQ(env.getSensorReadings().size(), 0);
+    env.addSensorReading(reading);
+    EXPECT_EQ(env.getSensorReadings().size(), 1);
+    EXPECT_EQ(env.getSensorReadings()[0].type,
+              pmbus_utils::SensorValueType::pout);
+    EXPECT_EQ(env.getSensorReadings()[0].value, 1.3);
+    reading.type = pmbus_utils::SensorValueType::temperature;
+    reading.value = -1;
+    env.addSensorReading(reading);
+    EXPECT_EQ(env.getSensorReadings().size(), 2);
+    EXPECT_EQ(env.getSensorReadings()[1].type,
+              pmbus_utils::SensorValueType::temperature);
+    EXPECT_EQ(env.getSensorReadings()[1].value, -1);
+}
+
 TEST(ActionEnvironmentTests, GetVolts)
 {
     IDMap idMap{};
