Awesome-copilot flowstudio-power-automate-monitoring
git clone https://github.com/github/awesome-copilot
T=$(mktemp -d) && git clone --depth=1 https://github.com/github/awesome-copilot "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/flowstudio-power-automate/skills/flowstudio-power-automate-monitoring" ~/.claude/skills/github-awesome-copilot-flowstudio-power-automate-monitoring && rm -rf "$T"
plugins/flowstudio-power-automate/skills/flowstudio-power-automate-monitoring/SKILL.mdPower Automate Monitoring with FlowStudio MCP
Monitor flow health, track failure rates, and inventory tenant assets through the FlowStudio MCP cached store — fast reads, no PA API rate limits, and enriched with governance metadata and remediation hints.
Requires: A FlowStudio for Teams or MCP Pro+ subscription.
Start every session with
to confirm tool names and parameters. This skill covers response shapes, behavioral notes, and workflow patterns — thingstools/listcannot tell you. If this document disagrees withtools/listor a real API response, the API wins.tools/list
How Monitoring Works
Flow Studio scans the Power Automate API daily for each subscriber and caches the results. There are two levels:
- All flows get metadata scanned: definition, connections, owners, trigger
type, and aggregate run statistics (
,runPeriodTotal
, etc.). Environments, apps, connections, and makers are also scanned.runPeriodFailRate - Monitored flows (
) additionally get per-run detail: individual run records with status, duration, failed action names, and remediation hints. This is what populatesmonitor: true
,get_store_flow_runs
, andget_store_flow_errors
.get_store_flow_summary
Data freshness: Check the
scanned field on get_store_flow to see when
a flow was last scanned. If stale, the scanning pipeline may not be running.
Enabling monitoring: Set
monitor: true via update_store_flow or the
Flow Studio for Teams app
(how to select flows).
Designating critical flows: Use
update_store_flow with critical=true
on business-critical flows. This enables the governance skill's notification
rule management to auto-configure failure alerts on critical flows.
Tools
| Tool | Purpose |
|---|---|
| List flows with failure rates and monitoring filters |
| Full cached record: run stats, owners, tier, connections, definition |
| Aggregated run stats: success/fail rate, avg/max duration |
| Per-run history with duration, status, failed actions, remediation |
| Failed-only runs with action names and remediation hints |
| Trigger URL from cache (instant, no PA API call) |
| Start or stop a flow and sync state back to cache |
| Set monitor flag, notification rules, tags, governance metadata |
| All Power Platform environments |
| All connections |
| All makers (citizen developers) |
| Maker detail: flow/app counts, licenses, account status |
| All Power Apps canvas apps |
Store vs Live
| Question | Use Store | Use Live |
|---|---|---|
| How many flows are failing? | | — |
| What's the fail rate over 30 days? | | — |
| Show error history for a flow | | — |
| Who built this flow? | → parse | — |
| Read the full flow definition | has it (JSON string) | (structured) |
| Inspect action inputs/outputs from a run | — | |
| Resubmit a failed run | — | |
Store tools answer "what happened?" and "how healthy is it?" Live tools answer "what exactly went wrong?" and "fix it now."
If
,get_store_flow_runs, orget_store_flow_errorsreturn empty results, check: (1) isget_store_flow_summaryon the flow? and (2) is themonitor: truefield recent? Usescannedto verify both.get_store_flow
Response Shapes
list_store_flows
list_store_flowsDirect array. Filters:
monitor (bool), rule_notify_onfail (bool),
rule_notify_onmissingdays (bool).
[ { "id": "Default-<envGuid>.<flowGuid>", "displayName": "Stripe subscription updated", "state": "Started", "triggerType": "Request", "triggerUrl": "https://...", "tags": ["#operations", "#sensitive"], "environmentName": "Default-26e65220-...", "monitor": true, "runPeriodFailRate": 0.012, "runPeriodTotal": 82, "createdTime": "2025-06-24T01:20:53Z", "lastModifiedTime": "2025-06-24T03:51:03Z" } ]
format:id. Split on firstDefault-<envGuid>.<flowGuid>to get.andenvironmentName.flowNameandtriggerUrlare optional. Some entries are sparse (justtags+id) — skip entries withoutmonitor.displayNameTags on
are auto-extracted from the flow'slist_store_flowsfield (maker hashtags likedescription). Tags written via#operationsare stored separately and only visible onupdate_store_flow(tags=...)— they do NOT appear in the list response.get_store_flow
get_store_flow
get_store_flowFull cached record. Key fields:
| Category | Fields |
|---|---|
| Identity | , , , , , , , |
| Run stats | , , , , , // (milliseconds), , , , , |
| Governance | (bool), (bool), (number), (string), (ISO), , |
| Freshness | (ISO), (ISO) |
| Lifecycle | (bool), (ISO) |
| JSON strings | , , , , , , , , , — all require to parse |
Duration fields (
,runPeriodDurationAverage,Max) are in milliseconds. Divide by 1000 for seconds.Mincontains the last run error as a JSON string. Parse it:runError— returnsjson.loads(record["runError"])when no error.{}
get_store_flow_summary
get_store_flow_summaryAggregated stats over a time window (default: last 7 days).
{ "flowKey": "Default-<envGuid>.<flowGuid>", "windowStart": null, "windowEnd": null, "totalRuns": 82, "successRuns": 81, "failRuns": 1, "successRate": 0.988, "failRate": 0.012, "averageDurationSeconds": 2.877, "maxDurationSeconds": 9.433, "firstFailRunRemediation": null, "firstFailRunUrl": null }
Returns all zeros when no run data exists for this flow in the window. Use
andstartTime(ISO 8601) parameters to change the window.endTime
get_store_flow_runs
/ get_store_flow_errors
get_store_flow_runsget_store_flow_errorsDirect array.
get_store_flow_errors filters to status=Failed only.
Parameters: startTime, endTime, status (array: ["Failed"],
["Succeeded"], etc.).
Both return
when no run data exists.[]
get_store_flow_trigger_url
get_store_flow_trigger_url{ "flowKey": "Default-<envGuid>.<flowGuid>", "displayName": "Stripe subscription updated", "triggerType": "Request", "triggerKind": "Http", "triggerUrl": "https://..." }
is null for non-HTTP triggers.triggerUrl
set_store_flow_state
set_store_flow_stateCalls the live PA API then syncs state to the cache and returns the full updated record.
{ "flowKey": "Default-<envGuid>.<flowGuid>", "requestedState": "Stopped", "currentState": "Stopped", "flow": { /* full gFlows record, same shape as get_store_flow */ } }
The embedded
object reflects the new state immediately — no follow-upflowcall needed. Useful for governance workflows that stop a flow and then read its tags/monitor/owner metadata in the same turn.get_store_flowFunctionally equivalent to
for changing state, butset_live_flow_stateonly returnsset_live_flow_stateand doesn't sync the cache. Prefer{flowName, environmentName, requestedState, actualState}when you only need to toggle state and don't care about cache freshness.set_live_flow_state
update_store_flow
update_store_flowUpdates governance metadata. Only provided fields are updated (merge). Returns the full updated record (same shape as
get_store_flow).
Settable fields:
monitor (bool), rule_notify_onfail (bool),
rule_notify_onmissingdays (number, 0=disabled),
rule_notify_email (comma-separated), description, tags,
businessImpact, businessJustification, businessValue,
ownerTeam, ownerBusinessUnit, supportGroup, supportEmail,
critical (bool), tier, security.
list_store_environments
list_store_environmentsDirect array.
[ { "id": "Default-26e65220-...", "displayName": "Flow Studio (default)", "sku": "Default", "type": "NotSpecified", "location": "australia", "isDefault": true, "isAdmin": true, "isManagedEnvironment": false, "createdTime": "2017-01-18T01:06:46Z" } ]
values:sku,Default,Production,Developer,Sandbox.Teams
list_store_connections
list_store_connectionsDirect array. Can be very large (1500+ items).
[ { "id": "<environmentId>.<connectionId>", "displayName": "user@contoso.com", "createdBy": "{\"id\":\"...\",\"displayName\":\"...\",\"email\":\"...\"}", "environmentName": "...", "statuses": "[{\"status\":\"Connected\"}]" } ]
andcreatedByare JSON strings — parse withstatuses.json.loads()
list_store_makers
list_store_makersDirect array.
[ { "id": "09dbe02f-...", "displayName": "Catherine Han", "mail": "catherine.han@flowstudio.app", "deleted": false, "ownerFlowCount": 199, "ownerAppCount": 209, "userIsServicePrinciple": false } ]
Deleted makers have
and nodeleted: true/displayNamefields.
get_store_maker
get_store_makerFull maker record. Key fields:
displayName, mail, userPrincipalName,
ownerFlowCount, ownerAppCount, accountEnabled, deleted, country,
firstFlow, firstFlowCreatedTime, lastFlowCreatedTime,
firstPowerApp, lastPowerAppCreatedTime,
licenses (JSON string of M365 SKUs).
list_store_power_apps
list_store_power_appsDirect array.
[ { "id": "<environmentId>.<appId>", "displayName": "My App", "environmentName": "...", "ownerId": "09dbe02f-...", "ownerName": "Catherine Han", "appType": "Canvas", "sharedUsersCount": 0, "createdTime": "2023-08-18T01:06:22Z", "lastModifiedTime": "2023-08-18T01:06:22Z", "lastPublishTime": "2023-08-18T01:06:22Z" } ]
Common Workflows
Find unhealthy flows
1. list_store_flows 2. Filter where runPeriodFailRate > 0.1 and runPeriodTotal >= 5 3. Sort by runPeriodFailRate descending 4. For each: get_store_flow for full detail
Check a specific flow's health
1. get_store_flow → check scanned (freshness), runPeriodFailRate, runPeriodTotal 2. get_store_flow_summary → aggregated stats with optional time window 3. get_store_flow_errors → per-run failure detail with remediation hints 4. If deeper diagnosis needed → switch to live tools: get_live_flow_runs → get_live_flow_run_action_outputs
Enable monitoring on a flow
1. update_store_flow with monitor=true 2. Optionally set rule_notify_onfail=true, rule_notify_email="user@domain.com" 3. Run data will appear after the next daily scan
Daily health check
1. list_store_flows 2. Flag flows with runPeriodFailRate > 0.2 and runPeriodTotal >= 3 3. Flag monitored flows with state="Stopped" (may indicate auto-suspension) 4. For critical failures → get_store_flow_errors for remediation hints
Maker audit
1. list_store_makers 2. Identify deleted accounts still owning flows (deleted=true, ownerFlowCount > 0) 3. get_store_maker for full detail on specific users
Inventory
1. list_store_environments → environment count, SKUs, locations 2. list_store_flows → flow count by state, trigger type, fail rate 3. list_store_power_apps → app count, owners, sharing 4. list_store_connections → connection count per environment
Related Skills
— Core connection setup, live tool referencepower-automate-mcp
— Deep diagnosis with action-level inputs/outputs (live API)power-automate-debug
— Build and deploy flow definitionspower-automate-build
— Governance metadata, tagging, notification rules, CoE patternspower-automate-governance