diff --git a/core/lib/Drupal/Core/Recipe/InputConfigurator.php b/core/lib/Drupal/Core/Recipe/InputConfigurator.php
index d090daaa6c4c2bace529be63c5fd886db0c3bb86..9dbc977f84fffe82109bf90ba550e5fc5b46dcc4 100644
--- a/core/lib/Drupal/Core/Recipe/InputConfigurator.php
+++ b/core/lib/Drupal/Core/Recipe/InputConfigurator.php
@@ -5,6 +5,7 @@
 namespace Drupal\Core\Recipe;
 
 use Drupal\Core\TypedData\DataDefinition;
+use Drupal\Core\TypedData\TypedDataInterface;
 use Drupal\Core\TypedData\TypedDataManagerInterface;
 use Symfony\Component\Validator\Exception\ValidationFailedException;
 
@@ -75,6 +76,19 @@ public function __construct(
     }
   }
 
+  /**
+   * Returns the typed data definitions for the inputs defined by this recipe.
+   *
+   * This does NOT return the data definitions for inputs defined by this
+   * recipe's dependencies.
+   *
+   * @return \Drupal\Core\TypedData\DataDefinitionInterface[]
+   *   The typed data definitions, keyed by input name.
+   */
+  public function getDataDefinitions(): array {
+    return array_map(fn (TypedDataInterface $data) => $data->getDataDefinition(), $this->data);
+  }
+
   /**
    * Returns the collected input values, keyed by name.
    *
@@ -98,9 +112,9 @@ public function describeAll(): array {
     foreach ($this->dependencies->recipes as $dependency) {
       $descriptions = array_merge($descriptions, $dependency->input->describeAll());
     }
-    foreach ($this->data as $key => $data) {
+    foreach ($this->getDataDefinitions() as $key => $definition) {
       $name = $this->prefix . '.' . $key;
-      $descriptions[$name] = $data->getDataDefinition()->getDescription();
+      $descriptions[$name] = $definition->getDescription();
     }
     return $descriptions;
   }