{"id":"622f0093-045b-4d7d-96a3-9dde6cd01502","shortId":"NKgaMm","kind":"skill","title":"flowstudio-power-automate-debug","tagline":">-","description":"# Power Automate Debugging with FlowStudio MCP\n\nA step-by-step diagnostic process for investigating failing Power Automate\ncloud flows through the FlowStudio MCP server.\n\n> **Real debugging examples**: [Expression error in child flow](https://github.com/ninihen1/power-automate-mcp-skills/blob/main/examples/fix-expression-error.md) |\n> [Data entry, not a flow bug](https://github.com/ninihen1/power-automate-mcp-skills/blob/main/examples/data-not-flow.md) |\n> [Null value crashes child flow](https://github.com/ninihen1/power-automate-mcp-skills/blob/main/examples/null-child-flow.md)\n\n**Prerequisite**: A FlowStudio MCP server must be reachable with a valid JWT.\nSee the `flowstudio-power-automate-mcp` skill for connection setup.\nSubscribe at https://mcp.flowstudio.app\n\n---\n\n## Source of Truth\n\n> **Always call `list_skills` / `tool_search` first** to confirm available tool\n> names and parameter schemas. Tool names and parameters may change between\n> server versions.\n> This skill covers response shapes, behavioral notes, and diagnostic patterns —\n> things tool schemas cannot tell you. If this document disagrees with\n> `tool_search` or a real API response, the API wins.\n\n---\n\n## Python Helper\n\n```python\nimport json, urllib.request\n\nMCP_URL   = \"https://mcp.flowstudio.app/mcp\"\nMCP_TOKEN = \"<YOUR_JWT_TOKEN>\"\n\ndef mcp(tool, **kwargs):\n    payload = json.dumps({\"jsonrpc\": \"2.0\", \"id\": 1, \"method\": \"tools/call\",\n                          \"params\": {\"name\": tool, \"arguments\": kwargs}}).encode()\n    req = urllib.request.Request(MCP_URL, data=payload,\n        headers={\"x-api-key\": MCP_TOKEN, \"Content-Type\": \"application/json\",\n                 \"User-Agent\": \"FlowStudio-MCP/1.0\"})\n    try:\n        resp = urllib.request.urlopen(req, timeout=120)\n    except urllib.error.HTTPError as e:\n        body = e.read().decode(\"utf-8\", errors=\"replace\")\n        raise RuntimeError(f\"MCP HTTP {e.code}: {body[:200]}\") from e\n    raw = json.loads(resp.read())\n    if \"error\" in raw:\n        raise RuntimeError(f\"MCP error: {json.dumps(raw['error'])}\")\n    return json.loads(raw[\"result\"][\"content\"][0][\"text\"])\n\nENV = \"<environment-id>\"   # e.g. Default-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n```\n\n---\n\n## Step 1 — Locate the Flow\n\n```python\nresult = mcp(\"list_live_flows\", environmentName=ENV)\n# Returns a wrapper object: {mode, flows, totalCount, error}\ntarget = next(f for f in result[\"flows\"] if \"My Flow Name\" in f[\"displayName\"])\nFLOW_ID = target[\"id\"]   # plain UUID — use directly as flowName\nprint(FLOW_ID)\n```\n\n---\n\n## Step 2 — Find the Failing Run\n\n```python\nruns = mcp(\"get_live_flow_runs\", environmentName=ENV, flowName=FLOW_ID, top=5)\n# Returns direct array (newest first):\n# [{\"name\": \"08584296068667933411438594643CU15\",\n#   \"status\": \"Failed\",\n#   \"startTime\": \"2026-02-25T06:13:38.6910688Z\",\n#   \"endTime\": \"2026-02-25T06:15:24.1995008Z\",\n#   \"triggerName\": \"manual\",\n#   \"error\": {\"code\": \"ActionFailed\", \"message\": \"An action failed...\"}},\n#  {\"name\": \"...\", \"status\": \"Succeeded\", \"error\": null, ...}]\n\nfor r in runs:\n    print(r[\"name\"], r[\"status\"], r[\"startTime\"])\n\nRUN_ID = next(r[\"name\"] for r in runs if r[\"status\"] == \"Failed\")\n```\n\n---\n\n## Step 3 — Get the Top-Level Error\n\n> **CRITICAL**: `get_live_flow_run_error` tells you **which** action failed.\n> `get_live_flow_run_action_outputs` tells you **why**. You must call BOTH.\n> Never stop at the error alone — error codes like `ActionFailed`,\n> `NotSpecified`, and `InternalServerError` are generic wrappers. The actual\n> root cause (wrong field, null value, HTTP 500 body, stack trace) is only\n> visible in the action's inputs and outputs.\n\n```python\nerr = mcp(\"get_live_flow_run_error\",\n    environmentName=ENV, flowName=FLOW_ID, runName=RUN_ID)\n# Returns:\n# {\n#   \"runName\": \"08584296068667933411438594643CU15\",\n#   \"failedActions\": [\n#     {\"actionName\": \"Apply_to_each_prepare_workers\", \"status\": \"Failed\",\n#      \"error\": {\"code\": \"ActionFailed\", \"message\": \"An action failed...\"},\n#      \"startTime\": \"...\", \"endTime\": \"...\"},\n#     {\"actionName\": \"HTTP_find_AD_User_by_Name\", \"status\": \"Failed\",\n#      \"code\": \"NotSpecified\", \"startTime\": \"...\", \"endTime\": \"...\"}\n#   ],\n#   \"allActions\": [\n#     {\"actionName\": \"Apply_to_each\", \"status\": \"Skipped\"},\n#     {\"actionName\": \"Compose_WeekEnd\", \"status\": \"Succeeded\"},\n#     ...\n#   ]\n# }\n\n# failedActions is ordered outer-to-inner. The ROOT cause is the LAST entry:\nroot = err[\"failedActions\"][-1]\nprint(f\"Root action: {root['actionName']} → code: {root.get('code')}\")\n\n# allActions shows every action's status — useful for spotting what was Skipped\n# See common-errors.md to decode the error code.\n```\n\n---\n\n## Step 4 — Inspect the Failing Action's Inputs and Outputs\n\n> **This is the most important step.** `get_live_flow_run_error` only gives\n> you a generic error code. The actual error detail — HTTP status codes,\n> response bodies, stack traces, null values — lives in the action's runtime\n> inputs and outputs. **Always inspect the failing action immediately after\n> identifying it.**\n\n```python\n# Get the root failing action's full inputs and outputs\nroot_action = err[\"failedActions\"][-1][\"actionName\"]\ndetail = mcp(\"get_live_flow_run_action_outputs\",\n    environmentName=ENV,\n    flowName=FLOW_ID,\n    runName=RUN_ID,\n    actionName=root_action)\n\nif len(detail) > 1:\n    print(f\"{root_action} returned {len(detail)} repetitions; inspect iteration indexes\")\nout = detail[0] if detail else {}\nprint(f\"Action: {out.get('actionName')}\")\nprint(f\"Status: {out.get('status')}\")\n\n# For HTTP actions, the real error is in outputs.body\nif isinstance(out.get(\"outputs\"), dict):\n    status_code = out[\"outputs\"].get(\"statusCode\")\n    body = out[\"outputs\"].get(\"body\", {})\n    print(f\"HTTP {status_code}\")\n    print(json.dumps(body, indent=2)[:500])\n\n    # Error bodies are often nested JSON strings — parse them\n    if isinstance(body, dict) and \"error\" in body:\n        err_detail = body[\"error\"]\n        if isinstance(err_detail, str):\n            err_detail = json.loads(err_detail)\n        print(f\"Error: {err_detail.get('message', err_detail)}\")\n\n# For expression errors, the error is in the error field\nif out.get(\"error\"):\n    print(f\"Error: {out['error']}\")\n\n# Also check inputs — they show what expression/URL/body was used\nif out.get(\"inputs\"):\n    print(f\"Inputs: {json.dumps(out['inputs'], indent=2)[:500]}\")\n```\n\n### What the action outputs reveal (that error codes don't)\n\n| Error code from `get_live_flow_run_error` | What `get_live_flow_run_action_outputs` reveals |\n|---|---|\n| `ActionFailed` | Which nested action actually failed and its HTTP response |\n| `NotSpecified` | The HTTP status code + response body with the real error |\n| `InternalServerError` | The server's error message, stack trace, or API error JSON |\n| `InvalidTemplate` | The exact expression that failed and the null/wrong-type value |\n| `BadRequest` | The request body that was sent and why the server rejected it |\n\n### Foreach iterations\n\nWhen `actionName` refers to an action inside a foreach, the output tool can\nreturn every repetition of that action. Each item may include\n`repetitionIndexes` with the loop name and zero-based `itemIndex`. Use\n`iterationIndex` to inspect one iteration after you find the suspicious item:\n\n```python\nall_reps = mcp(\"get_live_flow_run_action_outputs\",\n    environmentName=ENV,\n    flowName=FLOW_ID,\n    runName=RUN_ID,\n    actionName=root_action)\n\nfor rep in all_reps[:10]:\n    print(rep.get(\"repetitionIndexes\"), rep.get(\"status\"), rep.get(\"error\"))\n\none_rep = mcp(\"get_live_flow_run_action_outputs\",\n    environmentName=ENV,\n    flowName=FLOW_ID,\n    runName=RUN_ID,\n    actionName=root_action,\n    iterationIndex=3)\n```\n\n### Evidence Compose Bookends\n\nFor uncertain connector work, add a `Compose_*_Request` before the risky action\nand a `Compose_*_Result` after it, with the result action allowed on both\n`Succeeded` and `Failed`. This gives future debugging a clean payload snapshot\nwithout requiring another deploy. Do not include secrets or long binary payloads\nin these bookends.\n\n### Example: HTTP action returning 500\n\n```\nError code: \"InternalServerError\" ← this tells you nothing\n\nAction outputs reveal:\n  HTTP 500\n  body: {\"error\": \"Cannot read properties of undefined (reading 'toLowerCase')\n    at getClientParamsFromConnectionString (storage.js:20)\"}\n  ← THIS tells you the Azure Function crashed because a connection string is undefined\n```\n\n### Example: Expression error on null\n\n```\nError code: \"BadRequest\" ← generic\n\nAction outputs reveal:\n  inputs: \"body('HTTP_GetTokenFromStore')?['token']?['access_token']\"\n  outputs: \"\"   ← empty string, the path resolved to null\n  ← THIS tells you the response shape changed — token is at body.access_token, not body.token.access_token\n```\n\n---\n\n## Step 5 — Read the Flow Definition\n\n```python\ndefn = mcp(\"get_live_flow\", environmentName=ENV, flowName=FLOW_ID)\nactions = defn[\"properties\"][\"definition\"][\"actions\"]\nprint(list(actions.keys()))\n```\n\nFind the failing action in the definition. Inspect its `inputs` expression\nto understand what data it expects.\n\n---\n\n## Step 6 — Walk Back from the Failure\n\nWhen the failing action's inputs reference upstream actions, inspect those\ntoo. Walk backward through the chain until you find the source of the\nbad data:\n\n```python\n# Inspect multiple actions leading up to the failure\nfor action_name in [root_action, \"Compose_WeekEnd\", \"HTTP_Get_Data\"]:\n    result = mcp(\"get_live_flow_run_action_outputs\",\n        environmentName=ENV,\n        flowName=FLOW_ID,\n        runName=RUN_ID,\n        actionName=action_name)\n    out = result[0] if result else {}\n    print(f\"\\n--- {action_name} ({out.get('status')}) ---\")\n    print(f\"Inputs:  {json.dumps(out.get('inputs', ''), indent=2)[:300]}\")\n    print(f\"Outputs: {json.dumps(out.get('outputs', ''), indent=2)[:300]}\")\n```\n\n> ⚠️ Output payloads from array-processing actions can be very large.\n> Always slice (e.g. `[:500]`) before printing.\n\n> **Tip**: Omit `actionName` to list top-level actions when you're not sure\n> which action produced the bad data. Once you pick an action inside a foreach,\n> pass `iterationIndex` to avoid pulling every repetition into context.\n\n---\n\n## Step 7 — Pinpoint the Root Cause\n\n### Expression Errors (e.g. `split` on null)\nIf the error mentions `InvalidTemplate` or a function name:\n1. Find the action in the definition\n2. Check what upstream action/expression it reads\n3. **Inspect that upstream action's output** for null / missing fields\n\n```python\n# Example: action uses split(item()?['Name'], ' ')\n# → null Name in the source data\nresult = mcp(\"get_live_flow_run_action_outputs\", ..., actionName=\"Compose_Names\")\nif not result:\n    print(\"No outputs returned for Compose_Names\")\n    names = []\nelse:\n    names = result[0].get(\"outputs\", {}).get(\"body\") or []\nnulls = [x for x in names if x.get(\"Name\") is None]\nprint(f\"{len(nulls)} records with null Name\")\n```\n\n### Wrong Field Path\nExpression `triggerBody()?['fieldName']` returns null → `fieldName` is wrong.\n**Inspect the trigger output** to see the actual field names:\n```python\nresult = mcp(\"get_live_flow_run_action_outputs\", ..., actionName=\"<trigger-action-name>\")\nprint(json.dumps(result[0].get(\"outputs\"), indent=2)[:500])\n```\n\n### HTTP Actions Returning Errors\nThe error code says `InternalServerError` or `NotSpecified` — **always inspect\nthe action outputs** to get the actual HTTP status and response body:\n```python\nresult = mcp(\"get_live_flow_run_action_outputs\", ..., actionName=\"HTTP_Get_Data\")\nout = result[0]\nprint(f\"HTTP {out['outputs']['statusCode']}\")\nprint(json.dumps(out['outputs']['body'], indent=2)[:500])\n```\n\n### Connection / Auth Failures\nLook for `ConnectionAuthorizationFailed` — the connection owner must match the\nservice account running the flow. Cannot fix via API; fix in PA designer.\n\n### Outlook user-picker failures (`DynamicListValuesUndefinedOrInvalid`)\nOutlook actions like `GetEmailsV3` use parameters (`mailboxAddress`, `to`, `cc`,\n`from`) whose dropdown is backed by `builtInOperation:AadGraph.GetUsers` — which\nis broken at the PA listEnum layer and always returns\n`DynamicListValuesUndefinedOrInvalid`. This shows up when an agent rebuilds or\nmodifies an Outlook action via `update_live_flow` and tries to resolve a user\nthrough dynamic options. **Don't fix it by retrying AadGraph** — switch to\n`shared_office365users.SearchUserV2` instead (returns the same AAD user shape).\nUse `describe_live_connector` to confirm whether the affected parameter exposes\na structured `fallback`, then call `get_live_dynamic_options` against\n`shared_office365users.SearchUserV2` instead of the broken AadGraph operation.\nFor dynamic field schemas rather than dropdown options, use\n`get_live_dynamic_properties` with the metadata returned by\n`describe_live_connector`.\n\n---\n\n## Step 8 — Apply the Fix\n\n**For expression/data issues**:\n```python\ndefn = mcp(\"get_live_flow\", environmentName=ENV, flowName=FLOW_ID)\nacts = defn[\"properties\"][\"definition\"][\"actions\"]\n\n# Example: fix split on potentially-null Name\nacts[\"Compose_Names\"][\"inputs\"] = \\\n    \"@coalesce(item()?['Name'], 'Unknown')\"\n\nconn_refs = defn[\"properties\"][\"connectionReferences\"]\nresult = mcp(\"update_live_flow\",\n    environmentName=ENV,\n    flowName=FLOW_ID,\n    definition=defn[\"properties\"][\"definition\"],\n    connectionReferences=conn_refs)\n\nprint(result.get(\"error\"))  # None = success\n```\n\n> ⚠️ `update_live_flow` always returns an `error` key.\n> A value of `null` (Python `None`) means success.\n\n---\n\n## Step 9 — Verify the Fix\n\n> **Use `resubmit_live_flow_run` to test ANY flow — not just HTTP triggers.**\n> `resubmit_live_flow_run` replays a previous run using its original trigger\n> payload. This works for **every trigger type**: Recurrence, SharePoint\n> \"When an item is created\", connector webhooks, Button triggers, and HTTP\n> triggers. You do NOT need to ask the user to manually trigger the flow or\n> wait for the next scheduled run.\n>\n> The only case where `resubmit` is not available is a **brand-new flow that\n> has never run** — it has no prior run to replay.\n\n```python\n# Resubmit the failed run — works for ANY trigger type\nresubmit = mcp(\"resubmit_live_flow_run\",\n    environmentName=ENV, flowName=FLOW_ID, runName=RUN_ID)\nprint(resubmit)   # {\"resubmitted\": true, \"triggerName\": \"...\"}\n\n# Wait ~30 s then check\nimport time; time.sleep(30)\nnew_runs = mcp(\"get_live_flow_runs\", environmentName=ENV, flowName=FLOW_ID, top=3)\nprint(new_runs[0][\"status\"])   # Succeeded = done\n```\n\n### When to use resubmit vs trigger\n\n| Scenario | Use | Why |\n|---|---|---|\n| **Testing a fix** on any flow | `resubmit_live_flow_run` | Replays the exact trigger payload that caused the failure — best way to verify |\n| Recurrence / scheduled flow | `resubmit_live_flow_run` | Cannot be triggered on demand any other way |\n| SharePoint / connector trigger | `resubmit_live_flow_run` | Cannot be triggered without creating a real SP item |\n| HTTP trigger with **custom** test payload | `trigger_live_flow` | When you need to send different data than the original run |\n| Brand-new flow, never run | `trigger_live_flow` (HTTP only) | No prior run exists to resubmit |\n\n### Testing HTTP-Triggered Flows with custom payloads\n\nFor flows with a `Request` (HTTP) trigger, use `trigger_live_flow` when you\nneed to send a **different** payload than the original run:\n\n```python\n# First inspect what the trigger expects — read directly from the flow definition\ndefn = mcp(\"get_live_flow\", environmentName=ENV, flowName=FLOW_ID)\ntriggers = defn[\"properties\"][\"definition\"][\"triggers\"]\nmanual = next(iter(triggers.values()))   # usually the only trigger on HTTP flows\nrequest_schema = manual.get(\"inputs\", {}).get(\"schema\")\nprint(\"Expected body schema:\", request_schema)\n\n# Response schemas live on Response action(s) in the actions block\nfor name, act in defn[\"properties\"][\"definition\"][\"actions\"].items():\n    if act.get(\"type\") == \"Response\":\n        print(f\"Response {name}:\", act.get(\"inputs\", {}).get(\"schema\"))\n\n# Trigger with a test payload\nresult = mcp(\"trigger_live_flow\",\n    environmentName=ENV,\n    flowName=FLOW_ID,\n    body={\"name\": \"Test User\", \"value\": 42})\nprint(f\"Status: {result['responseStatus']}, Body: {result.get('responseBody')}\")\n```\n\n> `trigger_live_flow` handles AAD-authenticated triggers automatically.\n> Only works for flows with a `Request` (HTTP) trigger type.\n\n---\n\n## Quick-Reference Diagnostic Decision Tree\n\n| Symptom | First Tool | Then ALWAYS Call | What to Look For |\n|---|---|---|---|\n| Flow shows as Failed | `get_live_flow_run_error` | `get_live_flow_run_action_outputs` on the failing action | HTTP status + response body in `outputs` |\n| Error code is generic (`ActionFailed`, `NotSpecified`) | — | `get_live_flow_run_action_outputs` | The `outputs.body` contains the real error message, stack trace, or API error |\n| HTTP action returns 500 | — | `get_live_flow_run_action_outputs` | `outputs.statusCode` + `outputs.body` with server error detail |\n| Expression crash | — | `get_live_flow_run_action_outputs` on prior action | null / wrong-type fields in output body |\n| Flow never starts | `get_live_flow` | — | check `properties.state` = \"Started\" |\n| Action returns wrong data | `get_live_flow_run_action_outputs` | — | actual output body vs expected |\n| Fix applied but still fails | `get_live_flow_runs` after resubmit | — | new run `status` field |\n\n> **Rule: never diagnose from error codes alone.** `get_live_flow_run_error`\n> identifies the failing action. `get_live_flow_run_action_outputs` reveals\n> the actual cause. Always call both.\n\n---\n\n## Reference Files\n\n- [common-errors.md](references/common-errors.md) — Error codes, likely causes, and fixes\n- [debug-workflow.md](references/debug-workflow.md) — Full decision tree for complex failures\n\n## Related Skills\n\n- `flowstudio-power-automate-mcp` — Foundation skill: connection setup, MCP helper, tool discovery\n- `flowstudio-power-automate-build` — Build and deploy new flows","tags":["flowstudio","power","automate","debug","awesome","copilot","github","agent-skills","agents","custom-agents","github-copilot","hacktoberfest"],"capabilities":["skill","source-github","skill-flowstudio-power-automate-debug","topic-agent-skills","topic-agents","topic-awesome","topic-custom-agents","topic-github-copilot","topic-hacktoberfest","topic-prompt-engineering"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/flowstudio-power-automate-debug","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add github/awesome-copilot","source_repo":"https://github.com/github/awesome-copilot","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 33270 github stars · SKILL.md body (17,969 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:52:11.681Z","embedding":null,"createdAt":"2026-04-18T20:30:40.048Z","updatedAt":"2026-05-18T18:52:11.681Z","lastSeenAt":"2026-05-18T18:52:11.681Z","tsv":"'-02':336,344 '-1':538,641 '-25':337,345 '-8':212 '/1.0':197 '/mcp':153 '/ninihen1/power-automate-mcp-skills/blob/main/examples/data-not-flow.md)':50 '/ninihen1/power-automate-mcp-skills/blob/main/examples/fix-expression-error.md)':41 '/ninihen1/power-automate-mcp-skills/blob/main/examples/null-child-flow.md)':58 '0':245,679,1245,1412,1471,1517,1919 '08584296068667933411438594643cu15':331,477 '1':165,257,665,1349 '10':961 '120':203 '13':339 '15':347 '2':306,727,804,1263,1272,1356,1475,1530 '2.0':163 '200':222 '2026':335,343 '24.1995008':348 '3':389,990,1363,1915 '30':1894,1901 '300':1264,1273 '38.6910688':340 '4':568 '42':2157 '5':324,1130 '500':445,728,805,1049,1061,1288,1476,1531,2253 '6':1172 '7':1329 '8':1686 '9':1769 'aad':1632,2171 'aad-authent':2170 'aadgraph':1623,1662 'aadgraph.getusers':1579 'access':1104 'account':1545 'act':1704,1717,2118 'act.get':2126,2133 'action':357,405,411,454,492,542,551,572,611,621,631,638,649,661,669,685,695,808,829,835,895,908,943,955,976,988,1005,1015,1047,1057,1096,1146,1150,1157,1181,1186,1207,1214,1218,1230,1241,1252,1280,1299,1306,1315,1352,1367,1376,1393,1465,1478,1491,1509,1564,1603,1708,2110,2114,2123,2214,2219,2236,2251,2258,2272,2276,2294,2302,2339,2344 'action/expression':1360 'actionfail':354,429,489,832,2230 'actionnam':479,496,510,516,544,642,659,687,891,953,986,1240,1293,1395,1467,1511 'actions.keys':1153 'actual':437,596,836,1455,1496,2304,2348 'ad':499 'add':998 'affect':1643 'agent':193,1597 'allact':509,548 'allow':1016 'alon':425,2330 'also':785 'alway':88,617,1285,1488,1589,1755,2195,2350 'anoth':1032 'api':138,141,183,862,1552,2248 'appli':480,511,1687,2310 'application/json':190 'argument':171 'array':327,1278 'array-process':1277 'ask':1824 'auth':1533 'authent':2172 'autom':4,7,23,76,2376,2389 'automat':2174 'avail':97,1846 'avoid':1322 'azur':1078 'back':1174,1576 'backward':1191 'bad':1202,1309 'badrequest':875,1094 'base':921 'behavior':117 'best':1951 'binari':1040 'block':2115 'bodi':208,221,446,603,713,717,725,730,740,745,748,848,878,1062,1100,1416,1501,1528,2101,2152,2163,2223,2284,2306 'body.access':1124 'body.token.access':1127 'bookend':993,1044 'brand':1850,2007 'brand-new':1849,2006 'broken':1582,1661 'bug':47 'build':2390,2391 'builtinoper':1578 'button':1814 'call':89,418,1650,2196,2351 'cannot':125,1064,1549,1962,1977 'case':1841 'caus':439,530,1333,1948,2349,2360 'cc':1571 'chain':1194 'chang':108,1120 'check':786,1357,1897,2291 'child':37,54 'clean':1027 'cloud':24 'coalesc':1721 'code':353,427,488,505,545,547,566,594,601,708,722,813,817,846,1051,1093,1483,2227,2329,2358 'common-errors.md':561,2355 'complex':2369 'compos':517,992,1000,1008,1219,1396,1406,1718 'confirm':96,1640 'conn':1725,1745 'connect':80,1083,1532,1539,2380 'connectionauthorizationfail':1537 'connectionrefer':1729,1744 'connector':996,1638,1684,1812,1971 'contain':2240 'content':188,244 'content-typ':187 'context':1327 'cover':114 'crash':53,1080,2267 'creat':1811,1981 'critic':396 'custom':1989,2029 'data':42,178,1168,1203,1223,1310,1386,1514,2001,2297 'debug':5,8,32,1025 'debug-workflow.md':2363 'decis':2189,2366 'decod':210,563 'def':156 'default':250 'default-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx':249 'definit':1134,1149,1160,1355,1707,1740,1743,2066,2080,2122 'defn':1136,1147,1694,1705,1727,1741,2067,2078,2120 'demand':1966 'deploy':1033,2393 'describ':1636,1682 'design':1556 'detail':598,643,664,672,678,681,747,753,756,759,766,2265 'diagnos':2326 'diagnost':17,120,2188 'dict':706,741 'differ':2000,2048 'direct':299,326,2062 'disagre':131 'discoveri':2385 'displaynam':291 'document':130 'done':1922 'dropdown':1574,1670 'dynam':1615,1653,1665,1675 'dynamiclistvaluesundefinedorinvalid':1562,1591 'e':207,224 'e.code':220 'e.g':248,1287,1336 'e.read':209 'els':682,1248,1409 'empti':1107 'encod':173 'endtim':342,495,508 'entri':43,534 'env':247,268,319,468,652,946,979,1142,1233,1700,1736,1881,1910,2073,2148 'environmentnam':267,318,467,651,945,978,1141,1232,1699,1735,1880,1909,2072,2147 'err':460,536,639,746,752,755,758,765 'err_detail.get':763 'error':35,213,229,236,239,276,352,362,395,401,424,426,466,487,565,587,593,597,698,729,743,749,762,769,771,775,779,782,784,812,816,823,852,857,863,968,1050,1063,1089,1092,1335,1342,1480,1482,1749,1758,2209,2226,2243,2249,2264,2328,2335,2357 'everi':550,904,1324,1802 'evid':991 'exact':867,1944 'exampl':33,1045,1087,1375,1709 'except':204 'exist':2020 'expect':1170,2060,2100,2308 'expos':1645 'express':34,768,868,1088,1164,1334,1440,2266 'expression/data':1691 'expression/url/body':791 'f':217,234,279,281,290,540,667,684,689,719,761,781,798,1250,1257,1266,1430,1519,2130,2159 'fail':21,309,333,358,387,406,486,493,504,571,620,630,837,870,1021,1156,1180,1867,2204,2218,2313,2338 'failedact':478,521,537,640 'failur':1177,1212,1534,1561,1950,2370 'fallback':1648 'field':441,776,1373,1438,1456,1666,2281,2323 'fieldnam':1442,1445 'file':2354 'find':307,498,931,1154,1197,1350 'first':94,329,2055,2192 'fix':1550,1553,1619,1689,1710,1772,1934,2309,2362 'flow':25,38,46,55,260,266,274,284,287,292,303,316,321,399,409,464,470,585,647,654,821,827,941,948,974,981,1133,1140,1144,1228,1235,1391,1463,1507,1548,1607,1698,1702,1734,1738,1754,1776,1781,1788,1831,1852,1878,1883,1907,1912,1937,1940,1957,1960,1975,1994,2009,2014,2027,2032,2041,2065,2071,2075,2092,2146,2150,2168,2178,2201,2207,2212,2234,2256,2270,2285,2290,2300,2316,2333,2342,2395 'flownam':301,320,469,653,947,980,1143,1234,1701,1737,1882,1911,2074,2149 'flowstudio':2,10,28,61,74,195,2374,2387 'flowstudio-mcp':194 'flowstudio-power-automate-build':2386 'flowstudio-power-automate-debug':1 'flowstudio-power-automate-mcp':73,2373 'foreach':888,898,1318 'foundat':2378 'full':633,2365 'function':1079,1347 'futur':1024 'generic':434,592,1095,2229 'get':314,390,397,407,462,583,627,645,711,716,819,825,939,972,1138,1222,1226,1389,1413,1415,1461,1472,1494,1505,1513,1651,1673,1696,1905,2069,2097,2135,2205,2210,2232,2254,2268,2288,2298,2314,2331,2340 'getclientparamsfromconnectionstr':1072 'getemailsv3':1566 'gettokenfromstor':1102 'github.com':40,49,57 'github.com/ninihen1/power-automate-mcp-skills/blob/main/examples/data-not-flow.md)':48 'github.com/ninihen1/power-automate-mcp-skills/blob/main/examples/fix-expression-error.md)':39 'github.com/ninihen1/power-automate-mcp-skills/blob/main/examples/null-child-flow.md)':56 'give':589,1023 'handl':2169 'header':180 'helper':144,2383 'http':219,444,497,599,694,720,840,844,1046,1060,1101,1221,1477,1497,1512,1520,1784,1817,1986,2015,2025,2036,2091,2182,2220,2250 'http-trigger':2024 'id':164,293,295,304,322,376,471,474,655,658,949,952,982,985,1145,1236,1239,1703,1739,1884,1887,1913,2076,2151 'identifi':624,2336 'immedi':622 'import':146,581,1898 'includ':912,1036 'indent':726,803,1262,1271,1474,1529 'index':676 'inner':527 'input':456,574,614,634,787,796,799,802,1099,1163,1183,1258,1261,1720,2096,2134 'insid':896,1316 'inspect':569,618,674,926,1161,1187,1205,1364,1448,1489,2056 'instead':1628,1658 'internalservererror':432,853,1052,1485 'invalidtempl':865,1344 'investig':20 'isinst':703,739,751 'issu':1692 'item':910,934,1379,1722,1809,1985,2124 'itemindex':922 'iter':675,889,928,2084 'iterationindex':924,989,1320 'json':147,734,864 'json.dumps':161,237,724,800,1259,1268,1469,1525 'json.loads':226,241,757 'jsonrpc':162 'jwt':70 'key':184,1759 'kwarg':159,172 'larg':1284 'last':533 'layer':1587 'lead':1208 'len':663,671,1431 'level':394,1298 'like':428,1565,2359 'list':90,264,1152,1295 'listenum':1586 'live':265,315,398,408,463,584,608,646,820,826,940,973,1139,1227,1390,1462,1506,1606,1637,1652,1674,1683,1697,1733,1753,1775,1787,1877,1906,1939,1959,1974,1993,2013,2040,2070,2107,2145,2167,2206,2211,2233,2255,2269,2289,2299,2315,2332,2341 'locat':258 'long':1039 'look':1535,2199 'loop':916 'mailboxaddress':1569 'manual':351,1828,2082 'manual.get':2095 'match':1542 'may':107,911 'mcp':11,29,62,77,149,154,157,176,185,196,218,235,263,313,461,644,938,971,1137,1225,1388,1460,1504,1695,1731,1875,1904,2068,2143,2377,2382 'mcp.flowstudio.app':84,152 'mcp.flowstudio.app/mcp':151 'mean':1766 'mention':1343 'messag':355,490,764,858,2244 'metadata':1679 'method':166 'miss':1372 'mode':273 'modifi':1600 'multipl':1206 'must':64,417,1541 'n':1251 'name':99,104,169,288,330,359,370,379,502,917,1215,1242,1253,1348,1380,1382,1397,1407,1408,1410,1423,1426,1436,1457,1716,1719,1723,2117,2132,2153 'need':1822,1997,2044 'nest':733,834 'never':420,1855,2010,2286,2325 'new':1851,1902,1917,2008,2320,2394 'newest':328 'next':278,377,1836,2083 'none':1428,1750,1765 'note':118 'noth':1056 'notspecifi':430,506,842,1487,2231 'null':51,363,442,606,1091,1113,1339,1371,1381,1418,1432,1435,1444,1715,1763,2277 'null/wrong-type':873 'object':272 'office365users.searchuserv2':1627,1657 'often':732 'omit':1292 'one':927,969 'oper':1663 'option':1616,1654,1671 'order':523 'origin':1796,2004,2052 'out.get':686,691,704,778,795,1254,1260,1269 'outer':525 'outer-to-inn':524 'outlook':1557,1563,1602 'output':412,458,576,616,636,650,705,710,715,809,830,900,944,977,1058,1097,1106,1231,1267,1270,1274,1369,1394,1403,1414,1451,1466,1473,1492,1510,1522,1527,2215,2225,2237,2259,2273,2283,2303,2305,2345 'outputs.body':701,2239,2261 'outputs.statuscode':2260 'owner':1540 'pa':1555,1585 'param':168 'paramet':101,106,1568,1644 'pars':736 'pass':1319 'path':1110,1439 'pattern':121 'payload':160,179,1028,1041,1275,1798,1946,1991,2030,2049,2141 'pick':1313 'picker':1560 'pinpoint':1330 'plain':296 'potenti':1714 'potentially-nul':1713 'power':3,6,22,75,2375,2388 'prepar':483 'prerequisit':59 'previous':1792 'print':302,368,539,666,683,688,718,723,760,780,797,962,1151,1249,1256,1265,1290,1401,1429,1468,1518,1524,1747,1888,1916,2099,2129,2158 'prior':1860,2018,2275 'process':18,1279 'produc':1307 'properti':1066,1148,1676,1706,1728,1742,2079,2121 'properties.state':2292 'pull':1323 'python':143,145,261,311,459,626,935,1135,1204,1374,1458,1502,1693,1764,1864,2054 'quick':2186 'quick-refer':2185 'r':365,369,371,373,378,381,385 'rais':215,232 'rather':1668 'raw':225,231,238,242 're':1302 'reachabl':66 'read':1065,1069,1131,1362,2061 'real':31,137,697,851,1983,2242 'rebuild':1598 'record':1433 'recurr':1805,1955 'ref':1726,1746 'refer':892,1184,2187,2353 'references/common-errors.md':2356 'references/debug-workflow.md':2364 'reject':886 'relat':2371 'rep':937,957,960,970 'rep.get':963,965,967 'repetit':673,905,1325 'repetitionindex':913,964 'replac':214 'replay':1790,1863,1942 'req':174,201 'request':877,1001,2035,2093,2103,2181 'requir':1031 'resolv':1111,1611 'resp':199 'resp.read':227 'respons':115,139,602,841,847,1118,1500,2105,2109,2128,2131,2222 'responsebodi':2165 'responsestatus':2162 'resubmit':1774,1786,1843,1865,1874,1876,1889,1890,1926,1938,1958,1973,2022,2319 'result':243,262,283,1009,1014,1224,1244,1247,1387,1400,1411,1459,1470,1503,1516,1730,2142,2161 'result.get':1748,2164 'retri':1622 'return':240,269,325,475,670,903,1048,1404,1443,1479,1590,1629,1680,1756,2252,2295 'reveal':810,831,1059,1098,2346 'riski':1004 'root':438,529,535,541,543,629,637,660,668,954,987,1217,1332 'root.get':546 'rule':2324 'run':310,312,317,367,375,383,400,410,465,473,586,648,657,822,828,942,951,975,984,1229,1238,1392,1464,1508,1546,1777,1789,1793,1838,1856,1861,1868,1879,1886,1903,1908,1918,1941,1961,1976,2005,2011,2019,2053,2208,2213,2235,2257,2271,2301,2317,2321,2334,2343 'runnam':472,476,656,950,983,1237,1885 'runtim':613 'runtimeerror':216,233 'say':1484 'scenario':1929 'schedul':1837,1956 'schema':102,124,1667,2094,2098,2102,2104,2106,2136 'search':93,134 'secret':1037 'see':71,560,1453 'send':1999,2046 'sent':881 'server':30,63,110,855,885,2263 'servic':1544 'setup':81,2381 'shape':116,1119,1634 'share':1626,1656 'sharepoint':1806,1970 'show':549,789,1593,2202 'skill':78,91,113,2372,2379 'skill-flowstudio-power-automate-debug' 'skip':515,559 'slice':1286 'snapshot':1029 'sourc':85,1199,1385 'source-github' 'sp':1984 'split':1337,1378,1711 'spot':556 'stack':447,604,859,2245 'start':2287,2293 'starttim':334,374,494,507 'status':332,360,372,386,485,503,514,519,553,600,690,692,707,721,845,966,1255,1498,1920,2160,2221,2322 'statuscod':712,1523 'step':14,16,256,305,388,567,582,1129,1171,1328,1685,1768 'step-by-step':13 'still':2312 'stop':421 'storage.js:20':1073 'str':754 'string':735,1084,1108 'structur':1647 'subscrib':82 'succeed':361,520,1019,1921 'success':1751,1767 'sure':1304 'suspici':933 'switch':1624 'symptom':2191 't06':338,346 'target':277,294 'tell':126,402,413,1054,1075,1115 'test':1779,1932,1990,2023,2140,2154 'text':246 'thing':122 'time':1899 'time.sleep':1900 'timeout':202 'tip':1291 'token':155,186,1103,1105,1121,1125,1128 'tolowercas':1070 'tool':92,98,103,123,133,158,170,901,2193,2384 'tools/call':167 'top':323,393,1297,1914 'top-level':392,1296 'topic-agent-skills' 'topic-agents' 'topic-awesome' 'topic-custom-agents' 'topic-github-copilot' 'topic-hacktoberfest' 'topic-prompt-engineering' 'totalcount':275 'trace':448,605,860,2246 'tree':2190,2367 'tri':198,1609 'trigger':1450,1785,1797,1803,1815,1818,1829,1872,1928,1945,1964,1972,1979,1987,1992,2012,2026,2037,2039,2059,2077,2081,2089,2137,2144,2166,2173,2183 'triggerbodi':1441 'triggernam':350,1892 'triggers.values':2085 'true':1891 'truth':87 'type':189,1804,1873,2127,2184,2280 'uncertain':995 'undefin':1068,1086 'understand':1166 'unknown':1724 'updat':1605,1732,1752 'upstream':1185,1359,1366 'url':150,177 'urllib.error.httperror':205 'urllib.request':148 'urllib.request.request':175 'urllib.request.urlopen':200 'use':298,554,793,923,1377,1567,1635,1672,1773,1794,1925,1930,2038 'user':192,500,1559,1613,1633,1826,2155 'user-ag':191 'user-pick':1558 'usual':2086 'utf':211 'uuid':297 'valid':69 'valu':52,443,607,874,1761,2156 'verifi':1770,1954 'version':111 'via':1551,1604 'visibl':451 'vs':1927,2307 'wait':1833,1893 'walk':1173,1190 'way':1952,1969 'webhook':1813 'weekend':518,1220 'whether':1641 'whose':1573 'win':142 'without':1030,1980 'work':997,1800,1869,2176 'worker':484 'wrapper':271,435 'wrong':440,1437,1447,2279,2296 'wrong-typ':2278 'x':182,1419,1421 'x-api-key':181 'x.get':1425 'xxxx':252,253,254 'xxxxxxxx':251 'xxxxxxxxxxxx':255 'z':341,349 'zero':920 'zero-bas':919","prices":[{"id":"2ef258df-5257-4e6e-b02c-8146c4779a2d","listingId":"622f0093-045b-4d7d-96a3-9dde6cd01502","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T20:30:40.048Z"}],"sources":[{"listingId":"622f0093-045b-4d7d-96a3-9dde6cd01502","source":"github","sourceId":"github/awesome-copilot/flowstudio-power-automate-debug","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/flowstudio-power-automate-debug","isPrimary":false,"firstSeenAt":"2026-04-18T21:49:23.130Z","lastSeenAt":"2026-05-18T18:52:11.681Z"},{"listingId":"622f0093-045b-4d7d-96a3-9dde6cd01502","source":"skills_sh","sourceId":"github/awesome-copilot/flowstudio-power-automate-debug","sourceUrl":"https://skills.sh/github/awesome-copilot/flowstudio-power-automate-debug","isPrimary":true,"firstSeenAt":"2026-04-18T20:30:40.048Z","lastSeenAt":"2026-05-07T22:40:30.551Z"}],"details":{"listingId":"622f0093-045b-4d7d-96a3-9dde6cd01502","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"flowstudio-power-automate-debug","github":{"repo":"github/awesome-copilot","stars":33270,"topics":["agent-skills","agents","ai","awesome","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"license":"mit","html_url":"https://github.com/github/awesome-copilot","pushed_at":"2026-05-18T01:26:59Z","description":"Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.","skill_md_sha":"5944db84a5189386eff72206b153299a683216e7","skill_md_path":"skills/flowstudio-power-automate-debug/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/github/awesome-copilot/tree/main/skills/flowstudio-power-automate-debug"},"layout":"multi","source":"github","category":"awesome-copilot","frontmatter":{"name":"flowstudio-power-automate-debug","description":">-"},"skills_sh_url":"https://skills.sh/github/awesome-copilot/flowstudio-power-automate-debug"},"updatedAt":"2026-05-18T18:52:11.681Z"}}