Skill 167 · Flowstudio Power Automate MCP
Subchapter 167.1
references/action-types.mdMarkdown4 KBView on GitHub
Compact lookup for recognising action types returned by get_live_flow.
Use this to read and understand existing flow definitions.
For full copy-paste construction patterns, see the flowstudio-power-automate-build skill.
Every action has "type", "runAfter", and "inputs". The runAfter object
declares dependencies: {"Previous": ["Succeeded"]}. Valid statuses:
Succeeded, Failed, Skipped, TimedOut.
| Type | Purpose | Key fields to inspect | Output reference |
|---|---|---|---|
Compose | Store/transform a value | inputs (any expression) | outputs('Name') |
InitializeVariable | Declare a variable | inputs.variables[].{name, type, value} | variables('name') |
SetVariable | Update a variable | inputs.{name, value} | variables('name') |
IncrementVariable | Increment a numeric variable | inputs.{name, value} | variables('name') |
AppendToArrayVariable | Push to an array variable | inputs.{name, value} | variables('name') |
If | Conditional branch | expression.and/or, actions, else.actions | — |
Switch | Multi-way branch | expression, cases.{case, actions}, default | — |
Foreach | Loop over array | foreach, actions, operationOptions | item() / items('Name') |
Until | Loop until condition | expression, limit.{count, timeout}, actions | — |
Wait | Delay | inputs.interval.{count, unit} | — |
Scope | Group / try-catch | actions (nested action map) | result('Name') |
Terminate | End run | inputs.{runStatus, runError} | — |
OpenApiConnection | Connector call (SP, Outlook, Teams…) | inputs.host.{apiId, connectionName, operationId}, inputs.parameters | outputs('Name')?['body/...'] |
OpenApiConnectionWebhook | Webhook wait (approvals, adaptive cards) | same as above | body('Name')?['...'] |
Http | External HTTP call | inputs.{method, uri, headers, body} | outputs('Name')?['body'] |
Response | Return to HTTP caller | inputs.{statusCode, headers, body} | — |
Query | Filter array | inputs.{from, where} | body('Name') (filtered array) |
Select | Reshape/project array | inputs.{from, select} | body('Name') (projected array) |
Table | Array → CSV/HTML string | inputs.{from, format, columns} | body('Name') (string) |
ParseJson | Parse JSON with schema | inputs.{content, schema} | body('Name')?['field'] |
Expression | Built-in function (e.g. ConvertTimeZone) | kind, inputs | body('Name') |
When you see type: OpenApiConnection, identify the connector from host.apiId:
| apiId suffix | Connector |
|---|---|
shared_sharepointonline | SharePoint |
shared_office365 | Outlook / Office 365 |
shared_teams | Microsoft Teams |
shared_approvals | Approvals |
shared_office365users | Office 365 Users |
shared_flowmanagement | Flow Management |
The operationId tells you the specific operation (e.g. GetItems, SendEmailV2,
PostMessageToConversation). The connectionName maps to a GUID in
properties.connectionReferences.
| Expression | Meaning |
|---|---|
@outputs('X')?['body/value'] | Array result from connector action X |
@body('X') | Direct body of action X (Query, Select, ParseJson) |
@item()?['Field'] | Current loop item’s field |
@triggerBody()?['Field'] | Trigger payload field |
@variables('name') | Variable value |
@coalesce(a, b) | First non-null of a, b |
@first(array) | First element (null if empty) |
@length(array) | Array count |
@empty(value) | True if null/empty string/empty array |
@union(a, b) | Merge arrays — first wins on duplicates |
@result('Scope') | Array of action outcomes inside a Scope |