Celeste is building a Copilot Studio agent for Horizon Benefits that checks a member's remaining dental benefit balance. She has a Power Automate flow that calls the benefits API and returns a 'RemainingBalance' output parameter (Number type). After the 'Call an action' node runs in the topic, Celeste needs to display the balance in a message. How does she correctly access the flow's output value in the topic?
Select an answer to reveal the explanation.
Short Explanation
The Call an action node gives you named output variables scoped to the topic, like {ActionName.RemainingBalance}. You can drop that variable straight into a message node—no JSON parsing, no global variable, no Dataverse detour.
Full Explanation
When a Power Automate cloud flow returns output parameters via the 'Respond to Copilot' action (previously 'Return value(s) to Power Virtual Agents'), Copilot Studio automatically surfaces those outputs as named variables attached to the 'Call an action' node. The developer does not need to parse JSON or route data through Dataverse.
The correct approach is that the 'Call an action' node exposes the flow's output parameters as output variables scoped to the topic, such as 'ActionName.RemainingBalance'. Celeste references this variable in the message node using the variable picker or by typing {ActionName.RemainingBalance}. After the 'Call an action' node runs, Copilot Studio creates scoped output variables for each output parameter defined in the flow. The variable naming convention follows the pattern [ActionNodeName].[OutputParameterName]. In Celeste's case, if the 'Call an action' node is named 'CheckDentalBalance', the output variable becomes 'CheckDentalBalance.RemainingBalance'. This variable can be inserted directly into any downstream message node using the variable picker, producing output like 'Your remaining dental balance is ${CheckDentalBalance.RemainingBalance}.'
The claim that the flow's output is automatically stored in a global variable named 'Global.LastFlowOutput' and referenced as {Global.LastFlowOutput.RemainingBalance} is incorrect because there is no 'Global.LastFlowOutput' system variable in Copilot Studio. Global variables must be explicitly declared by the developer. Flow outputs are topic-scoped output variables of the calling action node, not automatically stored global variables.
The claim that Celeste must add a 'Parse JSON' node after the 'Call an action' node to extract the RemainingBalance value from the raw flow response is incorrect because Copilot Studio's integration with Power Automate handles the deserialization of flow outputs automatically. The flow's 'Respond to Copilot' action returns typed parameters that Copilot Studio maps directly to variables — no 'Parse JSON' node is needed in the topic (though Parse JSON exists in Power Automate flows themselves for other purposes).
The claim that flow outputs cannot be used directly in message nodes and must be stored in a Dataverse row first, then retrieved with a separate 'Get row' action, is incorrect. Writing to Dataverse and re-reading it is an absurd roundabout for a simple data handoff. Flow outputs are designed to pass data directly back to the calling topic in memory — no persistent storage is involved or required.
Exam tip: Copilot Studio's data flow follows this pattern: topic variable → flow input parameter → (flow executes) → flow output parameter → topic output variable. All mapping is handled in the 'Call an action' node. The output variable naming convention [NodeName].[OutputParamName] is testable.