{"id":"622f0093-045b-4d7d-96a3-9dde6cd01502","shortId":"NKgaMm","kind":"skill","title":"Flowstudio Power Automate Debug","tagline":"Awesome Copilot skill by Github","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 `tools/list` first** to confirm available tool names and their\n> parameter schemas. Tool names and parameters may change between server versions.\n> This skill covers response shapes, behavioral notes, and diagnostic patterns —\n> things `tools/list` cannot tell you. If this document disagrees with `tools/list`\n> 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\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### 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 get ALL actions in a single call.\n> This returns every action's inputs/outputs — useful when you're not sure\n> which upstream action produced the bad data. But use 120s+ timeout as\n> the response can be very large.\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---\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\nschema = mcp(\"get_live_flow_http_schema\",\n    environmentName=ENV, flowName=FLOW_ID)\nprint(\"Expected body schema:\", schema.get(\"requestSchema\"))\nprint(\"Response schemas:\", schema.get(\"responseSchemas\"))\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` — Core connection setup and operation reference\n- `flowstudio-power-automate-build` — Build and deploy new flows","tags":["flowstudio","power","automate","debug","awesome","copilot","github"],"capabilities":["skill","source-github","category-awesome-copilot"],"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":{"install_from":"skills.sh"}},"qualityScore":"0.300","qualityRationale":"deterministic score 0.30 from registry signals: · indexed on skills.sh · published under github/awesome-copilot","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:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T05:40:30.676Z","embedding":null,"createdAt":"2026-04-18T20:30:40.048Z","updatedAt":"2026-04-22T05:40:30.676Z","lastSeenAt":"2026-04-22T05:40:30.676Z","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)':54 '/ninihen1/power-automate-mcp-skills/blob/main/examples/fix-expression-error.md)':45 '/ninihen1/power-automate-mcp-skills/blob/main/examples/null-child-flow.md)':62 '0':245,664,1073,1244,1303,1349,1623 '08584296068667933411438594643cu15':331,477 '1':165,257,1181 '120':203 '120s':1151 '13':339 '15':347 '2':306,712,789,1091,1100,1188,1307,1362 '2.0':163 '200':222 '2026':335,343 '24.1995008':348 '3':389,1195,1619 '30':1598,1605 '300':1092,1101 '38.6910688':340 '4':568 '42':1808 '5':324,958 '500':445,713,790,877,889,1116,1308,1363,1904 '6':1000 '7':1161 '8':1390 '9':1473 'aad':1822 'aad-authent':1821 'access':932 'account':1377 'act':1408,1421 'action':357,405,411,454,492,542,551,572,611,621,631,638,649,661,670,680,793,814,820,875,885,924,974,978,985,1009,1014,1035,1042,1046,1058,1069,1080,1108,1125,1133,1144,1184,1199,1208,1225,1297,1310,1323,1341,1412,1865,1870,1887,1902,1909,1923,1927,1945,1953,1990,1995 'action/expression':1192 'actionfail':354,429,489,817,1881 'actionnam':479,496,510,516,544,642,659,672,1068,1121,1227,1299,1343 'actions.keys':981 'actual':437,596,821,1287,1328,1955,1999 'ad':499 'agent':193 'allact':509,548 'alon':425,1981 'also':770 'alway':92,617,1113,1320,1459,1846,2001 'api':138,141,183,847,1384,1899 'appli':480,511,1391,1961 'application/json':190 'argument':171 'array':327,1106 'array-process':1105 'ask':1528 'auth':1365 'authent':1823 'autom':3,11,27,80,2027,2038 'automat':1825 'avail':98,1550 'awesom':5 'azur':906 'back':1002 'backward':1019 'bad':1030,1147 'badrequest':860,922 'behavior':119 'best':1655 'bodi':208,221,446,603,698,702,710,715,725,730,733,833,863,890,928,1248,1333,1360,1779,1803,1814,1874,1935,1957 'body.access':952 'body.token.access':955 'brand':1554,1711 'brand-new':1553,1710 'bug':51 'build':2039,2040 'button':1518 'call':93,418,1129,1847,2002 'cannot':126,892,1381,1666,1681 'case':1545 'category-awesome-copilot' 'caus':439,530,1165,1652,2000,2011 'chain':1022 'chang':110,948 'check':771,1189,1601,1942 'child':41,58 'cloud':28 'coalesc':1425 'code':353,427,488,505,545,547,566,594,601,693,707,798,802,831,879,921,1315,1878,1980,2009 'common-errors.md':561,2006 'complex':2020 'compos':517,1047,1228,1238,1422 'confirm':97 'conn':1429,1449 'connect':84,911,1364,1371,2030 'connectionauthorizationfail':1369 'connectionrefer':1433,1448 'connector':1516,1675 'contain':1891 'content':188,244 'content-typ':187 'copilot':6 'core':2029 'cover':116 'crash':57,908,1918 'creat':1515,1685 'critic':396 'custom':1693,1733 'data':46,178,996,1031,1051,1148,1218,1346,1705,1948 'debug':4,12,36 'debug-workflow.md':2014 'decis':1840,2017 'decod':210,563 'def':156 'default':250 'default-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx':249 'definit':962,977,988,1187,1411,1444,1447 'defn':964,975,1398,1409,1431,1445 'demand':1670 'deploy':2042 'design':1388 'detail':598,643,663,666,732,738,741,744,751,1916 'diagnos':1977 'diagnost':21,122,1839 'dict':691,726 'differ':1704,1752 'direct':299,326 'disagre':132 'displaynam':291 'document':131 'done':1626 'e':207,224 'e.code':220 'e.g':248,1115,1168 'e.read':209 'els':667,1076,1241 'empti':935 'encod':173 'endtim':342,495,508 'entri':47,534 'env':247,268,319,468,652,970,1061,1404,1440,1585,1614,1773,1799 'environmentnam':267,318,467,651,969,1060,1403,1439,1584,1613,1772,1798 'err':460,536,639,731,737,740,743,750 'err_detail.get':748 'error':39,213,229,236,239,276,352,362,395,401,424,426,466,487,565,587,593,597,683,714,728,734,747,754,756,760,764,767,769,797,801,808,837,842,848,878,891,917,920,1167,1174,1312,1314,1453,1462,1860,1877,1894,1900,1915,1979,1986,2008 'everi':550,1132,1506 'exact':852,1648 'exampl':37,873,915,1207,1413 'except':204 'exist':1724 'expect':998,1764,1778,1959 'express':38,753,853,916,992,1166,1272,1917 'expression/data':1395 'expression/url/body':776 'f':217,234,279,281,290,540,669,674,704,746,766,783,1078,1085,1094,1262,1351,1810 'fail':25,309,333,358,387,406,486,493,504,571,620,630,822,855,984,1008,1571,1855,1869,1964,1989 'failedact':478,521,537,640 'failur':1005,1040,1366,1654,2021 'field':441,761,1205,1270,1288,1932,1974 'fieldnam':1274,1277 'file':2005 'find':307,498,982,1025,1182 'first':95,329,1759,1843 'fix':1382,1385,1393,1414,1476,1638,1960,2013 'flow':29,42,50,59,260,266,274,284,287,292,303,316,321,399,409,464,470,585,647,654,806,812,961,968,972,1056,1063,1223,1295,1339,1380,1402,1406,1438,1442,1458,1480,1485,1492,1535,1556,1582,1587,1611,1616,1641,1644,1661,1664,1679,1698,1713,1718,1731,1736,1745,1769,1775,1797,1801,1819,1829,1852,1858,1863,1885,1907,1921,1936,1941,1951,1967,1984,1993,2044 'flownam':301,320,469,653,971,1062,1405,1441,1586,1615,1774,1800 'flowstudio':1,14,32,65,78,195,2025,2036 'flowstudio-mcp':194 'flowstudio-power-automate-build':2035 'flowstudio-power-automate-mcp':77,2024 'full':633,2016 'function':907,1179 'generic':434,592,923,1880 'get':314,390,397,407,462,583,627,645,696,701,804,810,966,1050,1054,1123,1221,1245,1247,1293,1304,1326,1337,1345,1400,1609,1767,1856,1861,1883,1905,1919,1939,1949,1965,1982,1991 'getclientparamsfromconnectionstr':900 'gettokenfromstor':930 'github':9 'github.com':44,53,61 'github.com/ninihen1/power-automate-mcp-skills/blob/main/examples/data-not-flow.md)':52 'github.com/ninihen1/power-automate-mcp-skills/blob/main/examples/fix-expression-error.md)':43 'github.com/ninihen1/power-automate-mcp-skills/blob/main/examples/null-child-flow.md)':60 'give':589 'handl':1820 'header':180 'helper':144 'http':219,444,497,599,679,705,825,829,874,888,929,1049,1309,1329,1344,1352,1488,1521,1690,1719,1729,1740,1770,1833,1871,1901 'http-trigger':1728 'id':164,293,295,304,322,376,471,474,655,658,973,1064,1067,1407,1443,1588,1591,1617,1776,1802 'identifi':624,1987 'immedi':622 'import':146,581,1602 'indent':711,788,1090,1099,1306,1361 'inner':527 'input':456,574,614,634,772,781,784,787,927,991,1011,1086,1089,1424 'inputs/outputs':1135 'inspect':569,618,989,1015,1033,1196,1280,1321,1760 'internalservererror':432,838,880,1317 'invalidtempl':850,1176 'investig':24 'isinst':688,724,736 'issu':1396 'item':1211,1426,1513,1689 'json':147,719,849 'json.dumps':161,237,709,785,1087,1096,1301,1357 'json.loads':226,241,742 'jsonrpc':162 'jwt':74 'key':184,1463 'kwarg':159,172 'larg':1112,1159 'last':533 'lead':1036 'len':1263 'level':394 'like':428,2010 'list':264,980 'live':265,315,398,408,463,584,608,646,805,811,967,1055,1222,1294,1338,1401,1437,1457,1479,1491,1581,1610,1643,1663,1678,1697,1717,1744,1768,1796,1818,1857,1862,1884,1906,1920,1940,1950,1966,1983,1992 'locat':258 'look':1367,1850 'manual':351,1532 'match':1374 'may':109 'mcp':15,33,66,81,149,154,157,176,185,196,218,235,263,313,461,644,965,1053,1220,1292,1336,1399,1435,1579,1608,1766,1794,2028 'mcp.flowstudio.app':88,152 'mcp.flowstudio.app/mcp':151 'mean':1470 'mention':1175 'messag':355,490,749,843,1895 'method':166 'miss':1204 'mode':273 'multipl':1034 'must':68,417,1373 'n':1079 'name':100,106,169,288,330,359,370,379,502,1043,1070,1081,1180,1212,1214,1229,1239,1240,1242,1255,1258,1268,1289,1420,1423,1427,1804 'need':1526,1701,1748 'nest':718,819 'never':420,1559,1714,1937,1976 'new':1555,1606,1621,1712,1971,2043 'newest':328 'next':278,377,1540 'none':1260,1454,1469 'note':120 'noth':884 'notspecifi':430,506,827,1319,1882 'null':55,363,442,606,919,941,1171,1203,1213,1250,1264,1267,1276,1419,1467,1928 'null/wrong-type':858 'object':272 'often':717 'omit':1120 'oper':2033 'order':523 'origin':1500,1708,1756 'out.get':671,676,689,763,780,1082,1088,1097 'outer':525 'outer-to-inn':524 'output':412,458,576,616,636,650,690,695,700,794,815,886,925,934,1059,1095,1098,1102,1201,1226,1235,1246,1283,1298,1305,1324,1342,1354,1359,1866,1876,1888,1910,1924,1934,1954,1956,1996 'outputs.body':686,1890,1912 'outputs.statuscode':1911 'owner':1372 'pa':1387 'param':168 'paramet':103,108 'pars':721 'path':938,1271 'pattern':123 'payload':160,179,1103,1502,1650,1695,1734,1753,1792 'pinpoint':1162 'plain':296 'potenti':1418 'potentially-nul':1417 'power':2,10,26,79,2026,2037 'prepar':483 'prerequisit':63 'previous':1496 'print':302,368,539,668,673,703,708,745,765,782,979,1077,1084,1093,1118,1233,1261,1300,1350,1356,1451,1592,1620,1777,1783,1809 'prior':1564,1722,1926 'process':22,1107 'produc':1145 'properti':894,976,1410,1432,1446 'properties.state':1943 'python':143,145,261,311,459,626,963,1032,1206,1290,1334,1397,1468,1568,1758 'quick':1837 'quick-refer':1836 'r':365,369,371,373,378,381,385 'rais':215,232 'raw':225,231,238,242 're':1139 'reachabl':70 'read':893,897,959,1194 'real':35,137,682,836,1687,1893 'record':1265 'recurr':1509,1659 'ref':1430,1450 'refer':1012,1838,2004,2034 'references/common-errors.md':2007 'references/debug-workflow.md':2015 'reject':871 'relat':2022 'replac':214 'replay':1494,1567,1646 'req':174,201 'request':862,1739,1832 'requestschema':1782 'resolv':939 'resp':199 'resp.read':227 'respons':117,139,602,826,832,946,1155,1332,1784,1873 'responsebodi':1816 'responseschema':1787 'responsestatus':1813 'resubmit':1478,1490,1547,1569,1578,1580,1593,1594,1630,1642,1662,1677,1726,1970 'result':243,262,283,1052,1072,1075,1219,1232,1243,1291,1302,1335,1348,1434,1793,1812 'result.get':1452,1815 'return':240,269,325,475,876,1131,1236,1275,1311,1460,1903,1946 'reveal':795,816,887,926,1997 'root':438,529,535,541,543,629,637,660,1045,1164 'root.get':546 'rule':1975 'run':310,312,317,367,375,383,400,410,465,473,586,648,657,807,813,1057,1066,1224,1296,1340,1378,1481,1493,1497,1542,1560,1565,1572,1583,1590,1607,1612,1622,1645,1665,1680,1709,1715,1723,1757,1859,1864,1886,1908,1922,1952,1968,1972,1985,1994 'runnam':472,476,656,1065,1589 'runtim':613 'runtimeerror':216,233 'say':1316 'scenario':1633 'schedul':1541,1660 'schema':104,1765,1771,1780,1785 'schema.get':1781,1786 'see':75,560,1285 'send':1703,1750 'sent':866 'server':34,67,112,840,870,1914 'servic':1376 'setup':85,2031 'shape':118,947 'sharepoint':1510,1674 'show':549,774,1853 'singl':1128 'skill':7,82,115,2023 'skip':515,559 'slice':1114 'sourc':89,1027,1217 'source-github' 'sp':1688 'split':1169,1210,1415 'spot':556 'stack':447,604,844,1896 'start':1938,1944 'starttim':334,374,494,507 'status':332,360,372,386,485,503,514,519,553,600,675,677,692,706,830,1083,1330,1624,1811,1872,1973 'statuscod':697,1355 'step':18,20,256,305,388,567,582,957,999,1160,1389,1472 'step-by-step':17 'still':1963 'stop':421 'storage.js:20':901 'str':739 'string':720,912,936 'subscrib':86 'succeed':361,520,1625 'success':1455,1471 'sure':1141 'symptom':1842 't06':338,346 'target':277,294 'tell':127,402,413,882,903,943 'test':1483,1636,1694,1727,1791,1805 'text':246 'thing':124 'time':1603 'time.sleep':1604 'timeout':202,1152 'tip':1119 'token':155,186,931,933,949,953,956 'tolowercas':898 'tool':99,105,158,170,1844 'tools/call':167 'tools/list':94,125,134 'top':323,393,1618 'top-level':392 'totalcount':275 'trace':448,605,845,1897 'tree':1841,2018 'tri':198 'trigger':1282,1489,1501,1507,1519,1522,1533,1576,1632,1649,1668,1676,1683,1691,1696,1716,1730,1741,1743,1763,1788,1795,1817,1824,1834 'triggerbodi':1273 'triggernam':350,1596 'true':1595 'truth':91 'type':189,1508,1577,1835,1931 'undefin':896,914 'understand':994 'unknown':1428 'updat':1436,1456 'upstream':1013,1143,1191,1198 'url':150,177 'urllib.error.httperror':205 'urllib.request':148 'urllib.request.request':175 'urllib.request.urlopen':200 'use':298,554,778,1136,1150,1209,1477,1498,1629,1634,1742 'user':192,500,1530,1806 'user-ag':191 'utf':211 'uuid':297 'valid':73 'valu':56,443,607,859,1465,1807 'verifi':1474,1658 'version':113 'via':1383 'visibl':451 'vs':1631,1958 'wait':1537,1597 'walk':1001,1018 'way':1656,1673 'webhook':1517 'weekend':518,1048 'win':142 'without':1684 'work':1504,1573,1827 'worker':484 'wrapper':271,435 'wrong':440,1269,1279,1930,1947 'wrong-typ':1929 'x':182,1251,1253 'x-api-key':181 'x.get':1257 'xxxx':252,253,254 'xxxxxxxx':251 'xxxxxxxxxxxx':255 'z':341,349","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-04-22T00:52:09.188Z"},{"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-04-22T05:40:30.676Z"}],"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","source":"skills_sh","category":"awesome-copilot","skills_sh_url":"https://skills.sh/github/awesome-copilot/flowstudio-power-automate-debug"},"updatedAt":"2026-04-22T05:40:30.676Z"}}