{"id":"b755a8d8-701b-4217-b24d-cb202f80757a","shortId":"prcbff","kind":"skill","title":"Flowstudio Power Automate Build","tagline":"Awesome Copilot skill by Github","description":"# Build & Deploy Power Automate Flows with FlowStudio MCP\n\nStep-by-step guide for constructing and deploying Power Automate cloud flows\nprogrammatically through the FlowStudio MCP server.\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 build 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 — Safety Check: Does the Flow Already Exist?\n\nAlways look before you build to avoid duplicates:\n\n```python\nresults = mcp(\"list_live_flows\", environmentName=ENV)\n\n# list_live_flows returns { \"flows\": [...] }\nmatches = [f for f in results[\"flows\"]\n           if \"My New Flow\".lower() in f[\"displayName\"].lower()]\n\nif len(matches) > 0:\n    # Flow exists — modify rather than create\n    FLOW_ID = matches[0][\"id\"]   # plain UUID from list_live_flows\n    print(f\"Existing flow: {FLOW_ID}\")\n    defn = mcp(\"get_live_flow\", environmentName=ENV, flowName=FLOW_ID)\nelse:\n    print(\"Flow not found — building from scratch\")\n    FLOW_ID = None\n```\n\n---\n\n## Step 2 — Obtain Connection References\n\nEvery connector action needs a `connectionName` that points to a key in the\nflow's `connectionReferences` map. That key links to an authenticated connection\nin the environment.\n\n> **MANDATORY**: You MUST call `list_live_connections` first — do NOT ask the\n> user for connection names or GUIDs. The API returns the exact values you need.\n> Only prompt the user if the API confirms that required connections are missing.\n\n### 2a — Always call `list_live_connections` first\n\n```python\nconns = mcp(\"list_live_connections\", environmentName=ENV)\n\n# Filter to connected (authenticated) connections only\nactive = [c for c in conns[\"connections\"]\n          if c[\"statuses\"][0][\"status\"] == \"Connected\"]\n\n# Build a lookup: connectorName → connectionName (id)\nconn_map = {}\nfor c in active:\n    conn_map[c[\"connectorName\"]] = c[\"id\"]\n\nprint(f\"Found {len(active)} active connections\")\nprint(\"Available connectors:\", list(conn_map.keys()))\n```\n\n### 2b — Determine which connectors the flow needs\n\nBased on the flow you are building, identify which connectors are required.\nCommon connector API names:\n\n| Connector | API name |\n|---|---|\n| SharePoint | `shared_sharepointonline` |\n| Outlook / Office 365 | `shared_office365` |\n| Teams | `shared_teams` |\n| Approvals | `shared_approvals` |\n| OneDrive for Business | `shared_onedriveforbusiness` |\n| Excel Online (Business) | `shared_excelonlinebusiness` |\n| Dataverse | `shared_commondataserviceforapps` |\n| Microsoft Forms | `shared_microsoftforms` |\n\n> **Flows that need NO connections** (e.g. Recurrence + Compose + HTTP only)\n> can skip the rest of Step 2 — omit `connectionReferences` from the deploy call.\n\n### 2c — If connections are missing, guide the user\n\n```python\nconnectors_needed = [\"shared_sharepointonline\", \"shared_office365\"]  # adjust per flow\n\nmissing = [c for c in connectors_needed if c not in conn_map]\n\nif not missing:\n    print(\"✅ All required connections are available — proceeding to build\")\nelse:\n    # ── STOP: connections must be created interactively ──\n    # Connections require OAuth consent in a browser — no API can create them.\n    print(\"⚠️  The following connectors have no active connection in this environment:\")\n    for c in missing:\n        friendly = c.replace(\"shared_\", \"\").replace(\"onlinebusiness\", \" Online (Business)\")\n        print(f\"   • {friendly}  (API name: {c})\")\n    print()\n    print(\"Please create the missing connections:\")\n    print(\"  1. Open https://make.powerautomate.com/connections\")\n    print(\"  2. Select the correct environment from the top-right picker\")\n    print(\"  3. Click '+ New connection' for each missing connector listed above\")\n    print(\"  4. Sign in and authorize when prompted\")\n    print(\"  5. Tell me when done — I will re-check and continue building\")\n    # DO NOT proceed to Step 3 until the user confirms.\n    # After user confirms, re-run Step 2a to refresh conn_map.\n```\n\n### 2d — Build the connectionReferences block\n\nOnly execute this after 2c confirms no missing connectors:\n\n```python\nconnection_references = {}\nfor connector in connectors_needed:\n    connection_references[connector] = {\n        \"connectionName\": conn_map[connector],   # the GUID from list_live_connections\n        \"source\": \"Invoker\",\n        \"id\": f\"/providers/Microsoft.PowerApps/apis/{connector}\"\n    }\n```\n\n> **IMPORTANT — `host.connectionName` in actions**: When building actions in\n> Step 3, set `host.connectionName` to the **key** from this map (e.g.\n> `shared_teams`), NOT the connection GUID. The GUID only goes inside the\n> `connectionReferences` entry. The engine matches the action's\n> `host.connectionName` to the key to find the right connection.\n\n> **Alternative** — if you already have a flow using the same connectors,\n> you can extract `connectionReferences` from its definition:\n> ```python\n> ref_flow = mcp(\"get_live_flow\", environmentName=ENV, flowName=\"<existing-flow-id>\")\n> connection_references = ref_flow[\"properties\"][\"connectionReferences\"]\n> ```\n\nSee the `flowstudio-power-automate-mcp` skill's **connection-references.md** reference\nfor the full connection reference structure.\n\n---\n\n## Step 3 — Build the Flow Definition\n\nConstruct the definition object. See [flow-schema.md](references/flow-schema.md)\nfor the full schema and these action pattern references for copy-paste templates:\n- [action-patterns-core.md](references/action-patterns-core.md) — Variables, control flow, expressions\n- [action-patterns-data.md](references/action-patterns-data.md) — Array transforms, HTTP, parsing\n- [action-patterns-connectors.md](references/action-patterns-connectors.md) — SharePoint, Outlook, Teams, Approvals\n\n```python\ndefinition = {\n    \"$schema\": \"https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"triggers\": { ... },   # see trigger-types.md / build-patterns.md\n    \"actions\": { ... }     # see ACTION-PATTERNS-*.md / build-patterns.md\n}\n```\n\n> See [build-patterns.md](references/build-patterns.md) for complete, ready-to-use\n> flow definitions covering Recurrence+SharePoint+Teams, HTTP triggers, and more.\n\n---\n\n## Step 4 — Deploy (Create or Update)\n\n`update_live_flow` handles both creation and updates in a single tool.\n\n### Create a new flow (no existing flow)\n\nOmit `flowName` — the server generates a new GUID and creates via PUT:\n\n```python\nresult = mcp(\"update_live_flow\",\n    environmentName=ENV,\n    # flowName omitted → creates a new flow\n    definition=definition,\n    connectionReferences=connection_references,\n    displayName=\"Overdue Invoice Notifications\",\n    description=\"Weekly SharePoint → Teams notification flow, built by agent\"\n)\n\nif result.get(\"error\") is not None:\n    print(\"Create failed:\", result[\"error\"])\nelse:\n    # Capture the new flow ID for subsequent steps\n    FLOW_ID = result[\"created\"]\n    print(f\"✅ Flow created: {FLOW_ID}\")\n```\n\n### Update an existing flow\n\nProvide `flowName` to PATCH:\n\n```python\nresult = mcp(\"update_live_flow\",\n    environmentName=ENV,\n    flowName=FLOW_ID,\n    definition=definition,\n    connectionReferences=connection_references,\n    displayName=\"My Updated Flow\",\n    description=\"Updated by agent on \" + __import__('datetime').datetime.utcnow().isoformat()\n)\n\nif result.get(\"error\") is not None:\n    print(\"Update failed:\", result[\"error\"])\nelse:\n    print(\"Update succeeded:\", result)\n```\n\n> ⚠️ `update_live_flow` always returns an `error` key.\n> `null` (Python `None`) means success — do not treat the presence of the key as failure.\n>\n> ⚠️ `description` is required for both create and update.\n\n### Common deployment errors\n\n| Error message (contains) | Cause | Fix |\n|---|---|---|\n| `missing from connectionReferences` | An action's `host.connectionName` references a key that doesn't exist in the `connectionReferences` map | Ensure `host.connectionName` uses the **key** from `connectionReferences` (e.g. `shared_teams`), not the raw GUID |\n| `ConnectionAuthorizationFailed` / 403 | The connection GUID belongs to another user or is not authorized | Re-run Step 2a and use a connection owned by the current `x-api-key` user |\n| `InvalidTemplate` / `InvalidDefinition` | Syntax error in the definition JSON | Check `runAfter` chains, expression syntax, and action type spelling |\n| `ConnectionNotConfigured` | A connector action exists but the connection GUID is invalid or expired | Re-check `list_live_connections` for a fresh GUID |\n\n---\n\n## Step 5 — Verify the Deployment\n\n```python\ncheck = mcp(\"get_live_flow\", environmentName=ENV, flowName=FLOW_ID)\n\n# Confirm state\nprint(\"State:\", check[\"properties\"][\"state\"])  # Should be \"Started\"\n# If state is \"Stopped\", use set_live_flow_state — NOT update_live_flow\n# mcp(\"set_live_flow_state\", environmentName=ENV, flowName=FLOW_ID, state=\"Started\")\n\n# Confirm the action we added is there\nacts = check[\"properties\"][\"definition\"][\"actions\"]\nprint(\"Actions:\", list(acts.keys()))\n```\n\n---\n\n## Step 6 — Test the Flow\n\n> **MANDATORY**: Before triggering any test run, **ask the user for confirmation**.\n> Running a flow has real side effects — it may send emails, post Teams messages,\n> write to SharePoint, start approvals, or call external APIs. Explain what the\n> flow will do and wait for explicit approval before calling `trigger_live_flow`\n> or `resubmit_live_flow_run`.\n\n### Updated flows (have prior runs) — ANY trigger type\n\n> **Use `resubmit_live_flow_run` first.** It works for EVERY trigger type —\n> Recurrence, SharePoint, connector webhooks, Button, and HTTP. It replays\n> the original trigger payload. Do NOT ask the user to manually trigger the\n> flow or wait for the next scheduled run.\n\n```python\nruns = mcp(\"get_live_flow_runs\", environmentName=ENV, flowName=FLOW_ID, top=1)\nif runs:\n    # Works for Recurrence, SharePoint, connector triggers — not just HTTP\n    result = mcp(\"resubmit_live_flow_run\",\n        environmentName=ENV, flowName=FLOW_ID, runName=runs[0][\"name\"])\n    print(result)   # {\"resubmitted\": true, \"triggerName\": \"...\"}\n```\n\n### HTTP-triggered flows — custom test payload\n\nOnly use `trigger_live_flow` when you need to send a **different** payload\nthan the original run. For verifying a fix, `resubmit_live_flow_run` is\nbetter because it uses the exact data that caused the failure.\n\n```python\nschema = mcp(\"get_live_flow_http_schema\",\n    environmentName=ENV, flowName=FLOW_ID)\nprint(\"Expected body:\", schema.get(\"requestSchema\"))\n\nresult = mcp(\"trigger_live_flow\",\n    environmentName=ENV, flowName=FLOW_ID,\n    body={\"name\": \"Test\", \"value\": 1})\nprint(f\"Status: {result['responseStatus']}\")\n```\n\n### Brand-new non-HTTP flows (Recurrence, connector triggers, etc.)\n\nA brand-new Recurrence or connector-triggered flow has **no prior runs** to\nresubmit and no HTTP endpoint to call. This is the ONLY scenario where you\nneed the temporary HTTP trigger approach below. **Deploy with a temporary\nHTTP trigger first, test the actions, then swap to the production trigger.**\n\n#### 7a — Save the real trigger, deploy with a temporary HTTP trigger\n\n```python\n# Save the production trigger you built in Step 3\nproduction_trigger = definition[\"triggers\"]\n\n# Replace with a temporary HTTP trigger\ndefinition[\"triggers\"] = {\n    \"manual\": {\n        \"type\": \"Request\",\n        \"kind\": \"Http\",\n        \"inputs\": {\n            \"schema\": {}\n        }\n    }\n}\n\n# Deploy (create or update) with the temp trigger\nresult = mcp(\"update_live_flow\",\n    environmentName=ENV,\n    flowName=FLOW_ID,       # omit if creating new\n    definition=definition,\n    connectionReferences=connection_references,\n    displayName=\"Overdue Invoice Notifications\",\n    description=\"Deployed with temp HTTP trigger for testing\")\n\nif result.get(\"error\") is not None:\n    print(\"Deploy failed:\", result[\"error\"])\nelse:\n    if not FLOW_ID:\n        FLOW_ID = result[\"created\"]\n    print(f\"✅ Deployed with temp HTTP trigger: {FLOW_ID}\")\n```\n\n#### 7b — Fire the flow and check the result\n\n```python\n# Trigger the flow\ntest = mcp(\"trigger_live_flow\",\n    environmentName=ENV, flowName=FLOW_ID)\nprint(f\"Trigger response status: {test['status']}\")\n\n# Wait for the run to complete\nimport time; time.sleep(15)\n\n# Check the run result\nruns = mcp(\"get_live_flow_runs\",\n    environmentName=ENV, flowName=FLOW_ID, top=1)\nrun = runs[0]\nprint(f\"Run {run['name']}: {run['status']}\")\n\nif run[\"status\"] == \"Failed\":\n    err = mcp(\"get_live_flow_run_error\",\n        environmentName=ENV, flowName=FLOW_ID, runName=run[\"name\"])\n    root = err[\"failedActions\"][-1]\n    print(f\"Root cause: {root['actionName']} → {root.get('code')}\")\n    # Debug and fix the definition before proceeding\n    # See flowstudio-power-automate-debug skill for full diagnosis workflow\n```\n\n#### 7c — Swap to the production trigger\n\nOnce the test run succeeds, replace the temporary HTTP trigger with the real one:\n\n```python\n# Restore the production trigger\ndefinition[\"triggers\"] = production_trigger\n\nresult = mcp(\"update_live_flow\",\n    environmentName=ENV,\n    flowName=FLOW_ID,\n    definition=definition,\n    connectionReferences=connection_references,\n    description=\"Swapped to production trigger after successful test\")\n\nif result.get(\"error\") is not None:\n    print(\"Trigger swap failed:\", result[\"error\"])\nelse:\n    print(\"✅ Production trigger deployed — flow is live\")\n```\n\n> **Why this works**: The trigger is just the entry point — the actions are\n> identical regardless of how the flow starts. Testing via HTTP trigger\n> exercises all the same Compose, SharePoint, Teams, etc. actions.\n>\n> **Connector triggers** (e.g. \"When an item is created in SharePoint\"):\n> If actions reference `triggerBody()` or `triggerOutputs()`, pass a\n> representative test payload in `trigger_live_flow`'s `body` parameter\n> that matches the shape the connector trigger would produce.\n\n---\n\n## Gotchas\n\n| Mistake | Consequence | Prevention |\n|---|---|---|\n| Missing `connectionReferences` in deploy | 400 \"Supply connectionReferences\" | Always call `list_live_connections` first |\n| `\"operationOptions\"` missing on Foreach | Parallel execution, race conditions on writes | Always add `\"Sequential\"` |\n| `union(old_data, new_data)` | Old values override new (first-wins) | Use `union(new_data, old_data)` |\n| `split()` on potentially-null string | `InvalidTemplate` crash | Wrap with `coalesce(field, '')` |\n| Checking `result[\"error\"]` exists | Always present; true error is `!= null` | Use `result.get(\"error\") is not None` |\n| Flow deployed but state is \"Stopped\" | Flow won't run on schedule | Call `set_live_flow_state` with `state: \"Started\"` — do **not** use `update_live_flow` for state changes |\n| Teams \"Chat with Flow bot\" recipient as object | 400 `GraphUserDetailNotFound` | Use plain string with trailing semicolon (see below) |\n\n### Teams `PostMessageToConversation` — Recipient Formats\n\nThe `body/recipient` parameter format depends on the `location` value:\n\n| Location | `body/recipient` format | Example |\n|---|---|---|\n| **Chat with Flow bot** | Plain email string with **trailing semicolon** | `\"user@contoso.com;\"` |\n| **Channel** | Object with `groupId` and `channelId` | `{\"groupId\": \"...\", \"channelId\": \"...\"}` |\n\n> **Common mistake**: passing `{\"to\": \"user@contoso.com\"}` for \"Chat with Flow bot\"\n> returns a 400 `GraphUserDetailNotFound` error. The API expects a plain string.\n\n---\n\n## Reference Files\n\n- [flow-schema.md](references/flow-schema.md) — Full flow definition JSON schema\n- [trigger-types.md](references/trigger-types.md) — Trigger type templates\n- [action-patterns-core.md](references/action-patterns-core.md) — Variables, control flow, expressions\n- [action-patterns-data.md](references/action-patterns-data.md) — Array transforms, HTTP, parsing\n- [action-patterns-connectors.md](references/action-patterns-connectors.md) — SharePoint, Outlook, Teams, Approvals\n- [build-patterns.md](references/build-patterns.md) — Complete flow definition templates (Recurrence+SP+Teams, HTTP trigger)\n\n## Related Skills\n\n- `flowstudio-power-automate-mcp` — Core connection setup and tool reference\n- `flowstudio-power-automate-debug` — Debug failing flows after deployment","tags":["flowstudio","power","automate","build","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-build","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.652Z","embedding":null,"createdAt":"2026-04-18T20:30:40.043Z","updatedAt":"2026-04-22T05:40:30.652Z","lastSeenAt":"2026-04-22T05:40:30.652Z","tsv":"'-1':1789 '-8':186 '/1.0':171 '/connections':641 '/mcp':127 '/providers/microsoft.logic/schemas/2016-06-01/workflowdefinition.json#':899 '/providers/microsoft.powerapps/apis':748 '0':219,279,289,426,1441,1759 '1':139,231,637,1416,1524,1756 '1.0.0.0':901 '120':177 '15':1739 '2':325,532,643 '2.0':137 '200':196 '2a':395,704,1172 '2b':459 '2c':539,718 '2d':709 '3':655,692,759,850,1613 '365':490 '4':666,933 '400':1966,2071,2129 '403':1156 '5':674,1227 '6':1294 '7a':1593 '7b':1701 '7c':1816 'act':1284 'action':331,753,756,787,868,906,909,1127,1200,1206,1279,1288,1290,1586,1899,1920,1932 'action-pattern':908 'action-patterns-connectors.md':888,2164 'action-patterns-core.md':876,2152 'action-patterns-data.md':882,2158 'actionnam':1795 'activ':416,440,451,452,607 'acts.keys':1292 'ad':1281 'add':1986 'adjust':554 'agent':167,1000,1062 'alreadi':237,801 'altern':798 'alway':66,239,396,1087,1969,1985,2022 'anoth':1162 'api':112,115,157,375,388,480,483,597,626,1183,1331,2133 'application/json':164 'approach':1575 'approv':496,498,893,1327,1342,2169 'argument':145 'array':884,2160 'ask':366,1304,1388 'authent':351,413 'author':670,1167 'autom':3,13,28,54,837,1809,2186,2197 'avail':72,455,578 'avoid':245 'awesom':5 'base':466 'behavior':93 'belong':1160 'better':1481 'block':713 'bodi':182,195,1507,1520,1947 'body/recipient':2086,2095 'bot':2067,2101,2126 'brand':1531,1543 'brand-new':1530,1542 'browser':595 'build':4,10,96,243,318,429,472,581,686,710,755,851 'build-patterns.md':905,912,914,2170 'built':998,1610 'busi':501,506,622 'button':1377 'c':417,419,424,438,443,445,558,560,565,613,628 'c.replace':617 'call':67,359,397,538,1329,1344,1562,1970,2046 'cannot':100 'captur':1013 'category-awesome-copilot' 'caus':1121,1489,1793 'chain':1196 'chang':84,2062 'channel':2109 'channelid':2114,2116 'chat':2064,2098,2123 'check':233,683,1194,1218,1232,1246,1285,1706,1740,2018 'click':656 'cloud':29 'coalesc':2016 'code':1797 'common':478,1115,2117 'commondataserviceforapp':511 'complet':917,1735,2172 'compos':523,1916 'condit':1982 'confirm':71,389,696,699,719,1242,1277,1308 'conn':403,421,435,441,568,707,735 'conn_map.keys':458 'connect':58,327,352,362,370,392,400,407,412,414,422,428,453,520,541,576,584,589,608,635,658,724,731,743,773,797,826,846,986,1053,1158,1176,1210,1221,1658,1858,1973,2189 'connection-references.md':841 'connectionauthorizationfail':1155 'connectionnam':334,433,734 'connectionnotconfigur':1203 'connectionrefer':344,534,712,781,812,831,985,1052,1125,1139,1147,1657,1857,1963,1968 'connector':330,456,462,475,479,482,548,562,604,662,722,727,729,733,737,749,808,1205,1375,1423,1538,1548,1921,1954 'connector-trigg':1547 'connectornam':432,444 'consent':592 'consequ':1960 'construct':24,855 'contain':1120 'content':162,218 'content-typ':161 'contentvers':900 'continu':685 'control':879,2155 'copi':873 'copilot':6 'copy-past':872 'core':2188 'correct':646 'cover':90,924 'crash':2013 'creat':285,587,599,632,935,950,966,979,1008,1024,1028,1112,1634,1653,1691,1928 'creation':943 'current':1180 'custom':1452 'data':152,1487,1990,1992,2003,2005 'datavers':509 'datetim':1065 'datetime.utcnow':1066 'debug':1798,1810,2198,2199 'decod':184 'def':130 'default':224 'default-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx':223 'definit':815,854,857,895,923,983,984,1050,1051,1192,1287,1616,1624,1655,1656,1802,1841,1855,1856,2144,2174 'defn':303 'depend':2089 'deploy':11,26,537,934,1116,1230,1577,1598,1633,1665,1679,1694,1884,1965,2035,2203 'descript':992,1059,1107,1664,1860 'determin':460 'diagnosi':1814 'differ':1466 'disagre':106 'displaynam':274,988,1055,1660 'document':105 'doesn':1134 'done':678 'duplic':246 'e':181,198 'e.code':194 'e.g':222,521,768,1148,1923 'e.read':183 'effect':1315 'els':313,582,1012,1079,1683,1880 'email':1319,2103 'encod':147 'endpoint':1560 'engin':784 'ensur':1141 'entri':782,1896 'env':221,254,309,409,824,976,1046,1238,1271,1411,1435,1501,1516,1647,1719,1751,1779,1851 'environ':355,611,647 'environmentnam':253,308,408,823,975,1045,1237,1270,1410,1434,1500,1515,1646,1718,1750,1778,1850 'err':1771,1787 'error':187,203,210,213,1003,1011,1070,1078,1090,1117,1118,1189,1674,1682,1777,1870,1879,2020,2025,2030,2131 'etc':1540,1919 'everi':329,1370 'exact':378,1486 'exampl':2097 'excel':504 'excelonlinebusi':508 'except':178 'execut':715,1980 'exercis':1912 'exist':238,281,299,955,1033,1136,1207,2021 'expect':1506,2134 'expir':1215 'explain':1332 'explicit':1341 'express':881,1197,2157 'extern':1330 'extract':811 'f':191,208,261,263,273,298,448,624,747,1026,1526,1693,1724,1761,1791 'fail':1009,1076,1680,1770,1877,2200 'failedact':1788 'failur':1106,1491 'field':2017 'file':2139 'filter':410 'find':794 'fire':1702 'first':69,363,401,1366,1583,1974,1998 'first-win':1997 'fix':1122,1475,1800 'flow':14,30,236,252,257,259,266,270,280,286,296,300,301,307,311,315,321,342,464,469,516,556,804,818,822,829,853,880,922,940,953,956,974,982,997,1016,1021,1027,1029,1034,1044,1048,1058,1086,1236,1240,1259,1264,1268,1273,1297,1311,1335,1347,1351,1354,1364,1395,1408,1413,1432,1437,1451,1459,1478,1497,1503,1514,1518,1536,1550,1645,1649,1686,1688,1699,1704,1712,1717,1721,1748,1753,1775,1781,1849,1853,1885,1906,1945,2034,2040,2049,2059,2066,2100,2125,2143,2156,2173,2201 'flow-schema.md':860,2140 'flownam':310,825,958,977,1036,1047,1239,1272,1412,1436,1502,1517,1648,1720,1752,1780,1852 'flowstudio':1,16,34,39,52,169,835,1807,2184,2195 'flowstudio-mcp':168 'flowstudio-power-automate-debug':1806,2194 'flowstudio-power-automate-mcp':51,834,2183 'follow':603 'foreach':1978 'form':513 'format':2084,2088,2096 'found':317,449 'fresh':1224 'friend':616,625 'full':845,864,1813,2142 'generat':961 'get':305,820,1234,1406,1495,1746,1773 'github':9 'goe':778 'gotcha':1958 'graphuserdetailnotfound':2072,2130 'groupid':2112,2115 'guid':22,373,544,739,774,776,964,1154,1159,1211,1225 'handl':941 'header':154 'helper':118 'host.connectionname':751,761,789,1129,1142 'http':193,524,886,928,1379,1427,1449,1498,1535,1559,1573,1581,1602,1622,1630,1668,1697,1830,1910,2162,2179 'http-trigger':1448 'id':138,287,290,302,312,322,434,446,746,1017,1022,1030,1049,1241,1274,1414,1438,1504,1519,1650,1687,1689,1700,1722,1754,1782,1854 'ident':1901 'identifi':473 'import':120,750,1064,1736 'input':1631 'insid':779 'interact':588 'invalid':1213 'invaliddefinit':1187 'invalidtempl':1186,2012 'invoic':990,1662 'invok':745 'isoformat':1067 'item':1926 'json':121,1193,2145 'json.dumps':135,211 'json.loads':200,215 'jsonrpc':136 'jwt':48 'key':158,339,347,764,792,1091,1104,1132,1145,1184 'kind':1629 'kwarg':133,146 'len':277,450 'link':348 'list':250,255,294,360,398,405,457,663,741,1219,1291,1971 'live':251,256,295,306,361,399,406,742,821,939,973,1043,1085,1220,1235,1258,1263,1267,1346,1350,1363,1407,1431,1458,1477,1496,1513,1644,1716,1747,1774,1848,1887,1944,1972,2048,2058 'locat':2092,2094 'look':240 'lookup':431 'lower':271,275 'make.powerautomate.com':640 'make.powerautomate.com/connections':639 'mandatori':356,1298 'manual':1392,1626 'map':345,436,442,569,708,736,767,1140 'match':260,278,288,785,1950 'may':83,1317 'mcp':17,35,40,55,123,128,131,150,159,170,192,209,249,304,404,819,838,971,1041,1233,1265,1405,1429,1494,1511,1642,1714,1745,1772,1846,2187 'mcp.flowstudio.app':62,126 'mcp.flowstudio.app/mcp':125 'md':911 'mean':1095 'messag':1119,1322 'method':140 'microsoft':512 'microsoftform':515 'miss':394,543,557,572,615,634,661,721,1123,1962,1976 'mistak':1959,2118 'modifi':282 'must':42,358,585 'name':74,80,143,371,481,484,627,1442,1521,1764,1785 'need':332,381,465,518,549,563,730,1462,1570 'new':269,657,952,963,981,1015,1532,1544,1654,1991,1996,2002 'next':1400 'non':1534 'non-http':1533 'none':323,1006,1073,1094,1677,1873,2033 'note':94 'notif':991,996,1663 'null':1092,2010,2027 'oauth':591 'object':858,2070,2110 'obtain':326 'offic':489 'office365':492,553 'old':1989,1993,2004 'omit':533,957,978,1651 'one':1835 'onedr':499 'onedriveforbusi':503 'onlin':505,621 'onlinebusi':620 'open':638 'operationopt':1975 'origin':1383,1470 'outlook':488,891,2167 'overdu':989,1661 'overrid':1995 'own':1177 'parallel':1979 'param':142 'paramet':77,82,1948,2087 'pars':887,2163 'pass':1937,2119 'past':874 'patch':1038 'pattern':97,869,910 'payload':134,153,1385,1454,1467,1941 'per':555 'picker':653 'plain':291,2074,2102,2136 'pleas':631 'point':336,1897 'post':1320 'postmessagetoconvers':2082 'potenti':2009 'potentially-nul':2008 'power':2,12,27,53,836,1808,2185,2196 'prerequisit':37 'presenc':1101 'present':2023 'prevent':1961 'print':297,314,447,454,573,601,623,629,630,636,642,654,665,673,1007,1025,1074,1080,1244,1289,1443,1505,1525,1678,1692,1723,1760,1790,1874,1881 'prior':1356,1553 'proceed':579,689,1804 'produc':1957 'product':1591,1607,1614,1820,1839,1843,1863,1882 'programmat':31 'prompt':383,672 'properti':830,1247,1286 'provid':1035 'put':968 'python':117,119,247,402,547,723,816,894,969,1039,1093,1231,1403,1492,1604,1709,1836 'race':1981 'rais':189,206 'rather':283 'raw':199,205,212,216,1153 're':682,701,1169,1217 're-check':681,1216 're-run':700,1168 'reachabl':44 'readi':919 'ready-to-us':918 'real':111,1313,1596,1834 'recipi':2068,2083 'recurr':522,925,1373,1421,1537,1545,2176 'ref':817,828 'refer':328,725,732,827,842,847,870,987,1054,1130,1659,1859,1933,2138,2193 'references/action-patterns-connectors.md':889,2165 'references/action-patterns-core.md':877,2153 'references/action-patterns-data.md':883,2159 'references/build-patterns.md':915,2171 'references/flow-schema.md':861,2141 'references/trigger-types.md':2148 'refresh':706 'regardless':1902 'relat':2181 'replac':188,619,1618,1827 'replay':1381 'repres':1939 'req':148,175 'request':1628 'requestschema':1509 'requir':391,477,575,590,1109 'resp':173 'resp.read':201 'respons':91,113,1726 'responsestatus':1529 'rest':529 'restor':1837 'resubmit':1349,1362,1430,1445,1476,1556 'result':217,248,265,970,1010,1023,1040,1077,1083,1428,1444,1510,1528,1641,1681,1690,1708,1743,1845,1878,2019 'result.get':1002,1069,1673,1869,2029 'return':214,258,376,1088,2127 'right':652,796 'root':1786,1792,1794 'root.get':1796 'run':702,1170,1303,1309,1352,1357,1365,1402,1404,1409,1418,1433,1440,1471,1479,1554,1733,1742,1744,1749,1757,1758,1762,1763,1765,1768,1776,1784,1825,2043 'runaft':1195 'runnam':1439,1783 'runtimeerror':190,207 'safeti':232 'save':1594,1605 'scenario':1567 'schedul':1401,2045 'schema':78,865,896,1493,1499,1632,2146 'schema.get':1508 'schema.management.azure.com':898 'schema.management.azure.com/providers/microsoft.logic/schemas/2016-06-01/workflowdefinition.json#':897 'scratch':320 'see':49,832,859,903,907,913,1805,2079 'select':644 'semicolon':2078,2107 'send':1318,1464 'sequenti':1987 'server':36,41,86,960 'set':760,1257,1266,2047 'setup':59,2190 'shape':92,1952 'share':486,491,494,497,502,507,510,514,550,552,618,769,1149 'sharepoint':485,890,926,994,1325,1374,1422,1917,1930,2166 'sharepointonlin':487,551 'side':1314 'sign':667 'singl':948 'skill':7,56,89,839,1811,2182 'skip':527 'sourc':63,744 'source-github' 'sp':2177 'spell':1202 'split':2006 'start':1251,1276,1326,1907,2053 'state':1243,1245,1248,1253,1260,1269,1275,2037,2050,2052,2061 'status':425,427,1527,1727,1729,1766,1769 'step':19,21,230,324,531,691,703,758,849,932,1020,1171,1226,1293,1612 'step-by-step':18 'stop':583,1255,2039 'string':2011,2075,2104,2137 'structur':848 'subscrib':60 'subsequ':1019 'succeed':1082,1826 'success':1096,1866 'suppli':1967 'swap':1588,1817,1861,1876 'syntax':1188,1198 'team':493,495,770,892,927,995,1150,1321,1918,2063,2081,2168,2178 'tell':101,675 'temp':1639,1667,1696 'templat':875,2151,2175 'temporari':1572,1580,1601,1621,1829 'test':1295,1302,1453,1522,1584,1671,1713,1728,1824,1867,1908,1940 'text':220 'thing':98 'time':1737 'time.sleep':1738 'timeout':176 'token':129,160 'tool':73,79,132,144,949,2192 'tools/call':141 'tools/list':68,99,108 'top':651,1415,1755 'top-right':650 'trail':2077,2106 'transform':885,2161 'treat':1099 'tri':172 'trigger':902,929,1300,1345,1359,1371,1384,1393,1424,1450,1457,1512,1539,1549,1574,1582,1592,1597,1603,1608,1615,1617,1623,1625,1640,1669,1698,1710,1715,1725,1821,1831,1840,1842,1844,1864,1875,1883,1892,1911,1922,1943,1955,2149,2180 'trigger-types.md':904,2147 'triggerbodi':1934 'triggernam':1447 'triggeroutput':1936 'true':1446,2024 'truth':65 'type':163,1201,1360,1372,1627,2150 'union':1988,2001 'updat':937,938,945,972,1031,1042,1057,1060,1075,1081,1084,1114,1262,1353,1636,1643,1847,2057 'url':124,151 'urllib.error.httperror':179 'urllib.request':122 'urllib.request.request':149 'urllib.request.urlopen':174 'use':805,921,1143,1174,1256,1361,1456,1484,2000,2028,2056,2073 'user':166,368,385,546,695,698,1163,1185,1306,1390 'user-ag':165 'user@contoso.com':2108,2121 'utf':185 'uuid':292 'valid':47 'valu':379,1523,1994,2093 'variabl':878,2154 'verifi':1228,1473 'version':87 'via':967,1909 'wait':1339,1397,1730 'webhook':1376 'week':993 'win':116,1999 'won':2041 'work':1368,1419,1890 'workflow':1815 'would':1956 'wrap':2014 'write':1323,1984 'x':156,1182 'x-api-key':155,1181 'xxxx':226,227,228 'xxxxxxxx':225 'xxxxxxxxxxxx':229","prices":[{"id":"45d7b189-1b9a-4f72-9443-306108cc6201","listingId":"b755a8d8-701b-4217-b24d-cb202f80757a","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.043Z"}],"sources":[{"listingId":"b755a8d8-701b-4217-b24d-cb202f80757a","source":"github","sourceId":"github/awesome-copilot/flowstudio-power-automate-build","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/flowstudio-power-automate-build","isPrimary":false,"firstSeenAt":"2026-04-18T21:49:22.461Z","lastSeenAt":"2026-04-22T00:52:09.128Z"},{"listingId":"b755a8d8-701b-4217-b24d-cb202f80757a","source":"skills_sh","sourceId":"github/awesome-copilot/flowstudio-power-automate-build","sourceUrl":"https://skills.sh/github/awesome-copilot/flowstudio-power-automate-build","isPrimary":true,"firstSeenAt":"2026-04-18T20:30:40.043Z","lastSeenAt":"2026-04-22T05:40:30.652Z"}],"details":{"listingId":"b755a8d8-701b-4217-b24d-cb202f80757a","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"flowstudio-power-automate-build","source":"skills_sh","category":"awesome-copilot","skills_sh_url":"https://skills.sh/github/awesome-copilot/flowstudio-power-automate-build"},"updatedAt":"2026-04-22T05:40:30.652Z"}}