{"id":"b755a8d8-701b-4217-b24d-cb202f80757a","shortId":"prcbff","kind":"skill","title":"flowstudio-power-automate-build","tagline":">-","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\nWorkflow:\n1. Load current build tools.\n2. Check for an existing flow.\n3. Resolve connection references.\n4. Build the definition.\n5. Deploy.\n6. Verify.\n7. Test.\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 build 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## 0. Load the Current Build Tools\n\nFor a brand-new flow, load the server's `create-flow` bundle. For editing an\nexisting flow, load `build-flow`. This keeps the agent aligned with the MCP\nserver's current schema before constructing JSON.\n\n```python\nschemas = mcp(\"tool_search\", query=\"skill:create-flow\")\n# Includes list_live_environments, list_live_connections,\n# describe_live_connector, get_live_dynamic_options, update_live_flow.\n```\n\nIf you need a tool outside the bundle, load it explicitly:\n\n```python\nmcp(\"tool_search\", query=\"select:get_live_dynamic_properties\")\n```\n\n---\n\n## 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\",\n    environmentName=ENV,\n    mode=\"owner\",\n    search=\"My New Flow\",\n    top=20)\n\n# list_live_flows returns { \"flows\": [...], \"mode\": \"...\", ... }\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\nFor very large environments, `list_live_flows` may return a continuation URL.\nPass it back as `continuationUrl` with the same `mode` to retrieve the next\nbatch. Use `mode=\"admin\"` only when the user needs all environment flows and\nthe MCP identity has admin rights.\n\n---\n\n## 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 — Find active connections\n\n```python\nconns = mcp(\"list_live_connections\", environmentName=ENV)\nactive = [c for c in conns[\"connections\"]\n          if c[\"statuses\"][0][\"status\"] == \"Connected\"]\nconn_map = {c[\"connectorName\"]: c[\"id\"] for c in active}\n```\n\nFor a known connector, pass `search` to reduce output and get paste-ready\n`connectionReferenceTemplate` and `hostTemplate` values:\n\n```python\nsp_conns = mcp(\"list_live_connections\",\n    environmentName=ENV,\n    search=\"shared_sharepointonline\")\n```\n\n### 2b — Determine which connectors the flow needs\n\nCommon connector API names: SharePoint `shared_sharepointonline`, Outlook\n`shared_office365`, Teams `shared_teams`, Approvals `shared_approvals`,\nOneDrive `shared_onedriveforbusiness`, Excel `shared_excelonlinebusiness`,\nDataverse `shared_commondataserviceforapps`, Forms `shared_microsoftforms`.\n\nFlows that need no connectors, such as Recurrence + Compose + HTTP only, can\nomit `connectionReferences`.\n\n### 2c — If connections are missing, guide the user\n\n```python\nconnectors_needed = [\"shared_sharepointonline\", \"shared_office365\"]  # adjust per flow\nmissing = [c for c in connectors_needed if c not in conn_map]\nif missing:\n    # STOP: connections require browser OAuth consent.\n    # Ask the user to create the missing connector connections in the\n    # selected environment, then re-run list_live_connections.\n    raise Exception(f\"Missing active connections: {missing}\")\n```\n\n### 2d — Build the connectionReferences block\n\n```python\nconnection_references = {}\nhost_templates = {}\nfor connector in connectors_needed:\n    c = next(c for c in active if c[\"connectorName\"] == connector)\n    connection_references[connector] = c.get(\"connectionReferenceTemplate\") or {\n        \"connectionName\": c[\"id\"],   # the connection id from list_live_connections\n        \"source\": \"Invoker\",\n        \"id\": f\"/providers/Microsoft.PowerApps/apis/{connector}\"\n    }\n    host_templates[connector] = c.get(\"hostTemplate\") or {\n        \"connectionName\": connector\n    }\n```\n\nIn Step 3 action JSON, `inputs.host.connectionName` must be the map key such as\n`shared_teams`, not the GUID. The GUID belongs only inside the\n`connectionReferences[connector].connectionName` value. If an existing flow uses\nthe same connectors, you may also copy its `properties.connectionReferences`\nfrom `get_live_flow`.\n\n---\n\n## 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### Discover connector operations before guessing JSON\n\nFor connector-backed triggers/actions, prefer the live connector describer over\nhand-written shapes. It can return authored hints, canonical examples, variant\nkeys, inputs/outputs, and dynamic metadata pointers.\n\n```python\n# Search across connectors when you know the user's intent but not the API.\nmatches = mcp(\"describe_live_connector\",\n    environmentName=ENV,\n    search=\"send email\",\n    top=5)\n\n# Describe a specific operation before copying an exampleDefinition.\nop = mcp(\"describe_live_connector\",\n    environmentName=ENV,\n    connectorName=\"shared_office365\",\n    operationId=\"SendEmailV2\")\nprint(op.get(\"hint\"))\n```\n\nWhen an operation has multiple authored variants, request the variant the flow\nneeds:\n\n```python\nteams_chat = mcp(\"describe_live_connector\",\n    environmentName=ENV,\n    connectorName=\"shared_teams\",\n    operationId=\"PostMessageToConversation\",\n    variant=\"flowbot_chat\")\n```\n\nWhen the operation description says a parameter has dynamic options or dynamic\nproperties, call the indicated next tool:\n\n```python\nsp_op = mcp(\"describe_live_connector\",\n    environmentName=ENV,\n    connectorName=\"shared_sharepointonline\",\n    operationId=\"GetItems\")\n\nsites = mcp(\"get_live_dynamic_options\",\n    environmentName=ENV,\n    connectorName=\"shared_sharepointonline\",\n    connectionName=conn_map[\"shared_sharepointonline\"],\n    operationId=\"GetItems\",\n    parameterName=\"dataset\",\n    dynamicMetadata=sp_op[\"dynamicParameters\"][\"dataset\"])\n\nfields = mcp(\"get_live_dynamic_properties\",\n    environmentName=ENV,\n    connectorName=\"shared_sharepointonline\",\n    connectionName=conn_map[\"shared_sharepointonline\"],\n    operationId=\"GetItems\",\n    parameterName=\"item\",\n    parameters={\"dataset\": \"<site-url>\", \"table\": \"<list-id>\"},\n    dynamicMetadata=sp_op[\"dynamicProperties\"][\"item\"])\n```\n\nUse dynamic options for dropdown IDs such as SharePoint sites/lists and Teams\nteams/channels. Use dynamic properties for schema/field shapes such as\nSharePoint list item columns.\n\n---\n\n## 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\ndefinition[\"description\"] = \"Weekly SharePoint → Teams notification flow, built by agent\"\n\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)\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\ndefinition[\"description\"] = (\n    \"Updated by agent on \" + __import__('datetime').datetime.utcnow().isoformat()\n)\n\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)\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> ⚠️ Flow description lives at `definition[\"description\"]`. The current server\n> appends `#flowstudio-mcp` for usage tracking. Do not pass a top-level\n> `description` argument unless `tool_search` shows one in the active schema.\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## 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## 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\ndefn = mcp(\"get_live_flow\", environmentName=ENV, flowName=FLOW_ID)\ntriggers = defn[\"properties\"][\"definition\"][\"triggers\"]\nmanual = next(iter(triggers.values()))\nprint(\"Expected body:\", manual.get(\"inputs\", {}).get(\"schema\"))\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\nCompact recipe:\n\n```python\nproduction_trigger = definition[\"triggers\"]\ndefinition[\"triggers\"] = {\n    \"manual\": {\"type\": \"Request\", \"kind\": \"Http\", \"inputs\": {\"schema\": {}}}\n}\n\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\")\nFLOW_ID = FLOW_ID or result[\"created\"]\n\ntest = mcp(\"trigger_live_flow\", environmentName=ENV, flowName=FLOW_ID,\n           body={\"sample\": \"payload\"})\nruns = mcp(\"get_live_flow_runs\", environmentName=ENV, flowName=FLOW_ID, top=1)\n\nif runs[0][\"status\"] == \"Failed\":\n    err = mcp(\"get_live_flow_run_error\",\n        environmentName=ENV, flowName=FLOW_ID, runName=runs[0][\"name\"])\n    raise Exception(err[\"failedActions\"][-1])\n\ndefinition[\"triggers\"] = production_trigger\nmcp(\"update_live_flow\",\n    environmentName=ENV,\n    flowName=FLOW_ID,\n    definition=definition,\n    connectionReferences=connection_references)\n```\n\nThe trigger is only the entry point; testing through HTTP still exercises the\nsame actions. If actions use `triggerBody()` or `triggerOutputs()`, pass a\nrepresentative `trigger_live_flow.body` shaped like the production trigger\npayload.\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| Copilot/Skills flow not in a solution | Copilot Studio may not discover it as an agent tool | After deploy, call `add_live_flow_to_solution` with the target `solutionId` |\n| Button/Skills trigger used for MCP testing | MCP cannot directly fire the production trigger | Test the same actions through a temporary HTTP twin, then swap the trigger back |\n| Connector action missing `metadata.operationMetadataId` | Designer/run-only UI can behave inconsistently | Preserve existing IDs; add stable GUIDs for new connector actions |\n| Placeholder Excel `scriptId` | Dynamic validation fails at save time | Resolve the real Office Script ID before deploying |\n| SharePoint `PatchItem` omits required fields | Save can fail even if the field is not changing | Echo unchanged required fields such as `item/Title` |\n| Copilot Studio connector calls a draft agent | Connector invocation can fail or hit stale behavior | Publish the agent before testing/resubmitting the flow |\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","agent-skills","agents","custom-agents","github-copilot","hacktoberfest"],"capabilities":["skill","source-github","skill-flowstudio-power-automate-build","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-build","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 (19,039 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.589Z","embedding":null,"createdAt":"2026-04-18T20:30:40.043Z","updatedAt":"2026-05-18T18:52:11.589Z","lastSeenAt":"2026-05-18T18:52:11.589Z","tsv":"'-1':1945 '-8':212 '/1.0':197 '/mcp':153 '/providers/microsoft.logic/schemas/2016-06-01/workflowdefinition.json#':895 '/providers/microsoft.powerapps/apis':790 '0':245,256,405,415,586,1687,1922,1939 '1':60,165,348,1662,1779,1919 '1.0.0.0':897 '120':203 '2':65,494 '2.0':163 '20':379 '200':222 '2a':564,1420 '2b':629 '2c':678 '2d':744 '3':71,802,846 '4':75,1153 '400':2003,2108,2301 '403':1404 '5':79,989,1474 '6':81,1540 '7':83 'across':965 'act':1531 'action':500,803,864,902,905,1375,1448,1454,1526,1535,1537,1841,1978,1980,2162,2174,2191 'action-pattern':904 'action-patterns-connectors.md':884,2336 'action-patterns-core.md':872,2324 'action-patterns-data.md':878,2330 'activ':566,576,598,741,765,1361 'acts.keys':1539 'ad':1528 'add':2023,2137,2185 'adjust':693 'admin':478,492 'agent':193,288,1199,1265,2132,2237,2248 'align':289 'alreadi':354 'also':838 'alway':88,356,1309,2006,2022,2059 'anoth':1410 'api':138,141,183,544,557,638,977,1431,1577,2305 'append':1338 'application/json':190 'approach':1830 'approv':649,651,889,1573,1588,2341 'argument':171,1353 'array':880,2332 'ask':535,717,1550,1634 'authent':520 'author':952,1018,1415 'autom':4,9,24,50,2358,2369 'avail':97 'avoid':362 'back':464,937,2172 'batch':475 'behav':2180 'behavior':117,2245 'belong':820,1408 'better':1727 'block':748 'bodi':208,221,1760,1775,1904 'body/recipient':2258,2267 'bot':2104,2273,2298 'brand':265,1786,1798 'brand-new':264,1785,1797 'browser':714 'build':5,6,63,76,120,260,283,360,444,745,847 'build-flow':282 'build-patterns.md':901,908,910,2342 'built':1197 'bundl':275,334 'button':1623 'button/skills':2146 'c':577,579,584,591,593,596,697,699,704,759,761,763,767,777 'c.get':773,795 'call':89,528,1056,1575,1590,1817,2007,2083,2136,2234 'cannot':125,2153 'canon':954 'captur':1234 'caus':1369,1735 'chain':1444 'chang':108,2099,2223 'channel':2281 'channelid':2286,2288 'chat':1028,1042,2101,2270,2295 'check':66,350,1442,1466,1479,1493,1532,2055 'cloud':25 'coalesc':2053 'column':1152 'common':636,1363,2289 'commondataserviceforapp':660 'compact':1848 'complet':913,2344 'compos':672 'condit':2019 'confirm':96,558,1489,1524,1554 'conn':569,581,589,619,707,1087,1112 'connect':54,73,316,496,521,531,539,561,567,573,582,588,623,680,712,725,736,742,750,770,780,785,1216,1284,1406,1424,1458,1469,1881,1962,2010,2361 'connectionauthorizationfail':1403 'connectionnam':503,776,798,826,1086,1111 'connectionnotconfigur':1451 'connectionrefer':513,677,747,824,1215,1283,1373,1387,1395,1880,1961,2000,2005 'connectionreferencetempl':613,774 'connector':319,499,602,632,637,668,687,701,724,755,757,769,772,791,794,799,825,835,929,936,942,966,982,1002,1032,1067,1453,1621,1669,1793,1803,2173,2190,2233,2238 'connector-back':935 'connector-trigg':1802 'connectornam':592,768,1005,1035,1070,1083,1108 'consent':716 'consequ':1997 'construct':20,298,851 'contain':1368 'content':188,244 'content-typ':187 'contentvers':896 'continu':460 'continuationurl':466 'control':875,2327 'copi':839,869,995 'copilot':2124,2231 'copilot/skills':2118 'copy-past':868 'core':2360 'cover':114,920 'crash':2050 'creat':273,308,411,721,1155,1170,1186,1209,1229,1245,1249,1876,1893 'create-flow':272,307 'creation':1163 'current':62,259,295,1336,1428 'custom':1698 'data':178,1733,2027,2029,2040,2042 'dataset':1094,1099,1121 'datavers':658 'datetim':1268 'datetime.utcnow':1269 'debug':2370,2371 'decod':210 'def':156 'default':250 'default-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx':249 'definit':78,850,853,891,919,1190,1213,1214,1261,1281,1282,1333,1440,1534,1752,1853,1855,1878,1879,1946,1959,1960,2316,2346 'defn':429,1739,1750 'depend':2261 'deploy':7,22,80,1154,1364,1477,1832,2002,2072,2135,2208,2375 'describ':317,943,980,990,1000,1030,1065 'descript':1046,1191,1262,1330,1334,1352 'designer/run-only':2177 'determin':630 'differ':1712 'direct':2154 'disagre':131 'discov':928,2128 'displaynam':400,1218,1286,1883 'document':130 'doesn':1382 'draft':2236 'dropdown':1132 'duplic':363 'dynam':322,346,960,1051,1054,1079,1104,1129,1142,2195 'dynamicmetadata':1095,1123 'dynamicparamet':1098 'dynamicproperti':1126 'e':207,224 'e.code':220 'e.g':248,1396 'e.read':209 'echo':2224 'edit':277 'effect':1561 'els':439,1233,1301 'email':987,1565,2275 'encod':173 'endpoint':1815 'ensur':1389 'entri':1969 'env':247,371,435,575,625,984,1004,1034,1069,1082,1107,1206,1277,1485,1518,1657,1681,1745,1771,1870,1900,1914,1933,1955 'environ':313,453,485,524,729 'environmentnam':370,434,574,624,983,1003,1033,1068,1081,1106,1205,1276,1484,1517,1656,1680,1744,1770,1869,1899,1913,1932,1954 'err':1925,1943 'error':213,229,236,239,1224,1232,1292,1300,1312,1365,1366,1437,1931,2057,2062,2067,2303 'etc':1795 'even':2217 'everi':498,1616 'exact':547,1732 'exampl':955,2269 'exampledefinit':997 'excel':655,2193 'excelonlinebusi':657 'except':204,738,1942 'execut':2017 'exercis':1975 'exist':69,279,355,407,425,830,1175,1254,1384,1455,2058,2183 'expect':1759,2306 'expir':1463 'explain':1578 'explicit':337,1587 'express':877,1445,2329 'extern':1576 'f':217,234,387,389,399,424,739,789,1247,1781 'fail':1230,1298,1924,2197,2216,2241,2372 'failedact':1944 'failur':1328,1737 'field':1100,2054,2213,2220,2227 'file':2311 'find':565 'fire':2155 'first':94,532,1612,1838,2011,2035 'first-win':2034 'fix':1370,1721 'flow':10,26,70,267,274,280,284,309,326,353,369,377,382,384,392,396,406,412,422,426,427,433,437,441,447,456,486,511,634,664,695,831,845,849,876,918,1024,1160,1173,1176,1196,1204,1212,1237,1242,1248,1250,1255,1275,1279,1289,1308,1329,1483,1487,1506,1511,1515,1520,1543,1557,1581,1593,1597,1600,1610,1641,1654,1659,1678,1683,1697,1705,1724,1743,1747,1769,1773,1791,1805,1868,1872,1887,1889,1898,1902,1911,1916,1929,1935,1953,1957,2071,2077,2086,2096,2103,2119,2139,2252,2272,2297,2315,2328,2345,2373 'flow-schema.md':856,2312 'flowbot':1041 'flownam':436,1178,1207,1257,1278,1486,1519,1658,1682,1746,1772,1871,1901,1915,1934,1956 'flowstudio':2,12,30,35,48,195,1340,2356,2367 'flowstudio-mcp':194,1339 'flowstudio-power-automate-build':1 'flowstudio-power-automate-debug':2366 'flowstudio-power-automate-mcp':47,2355 'foreach':2015 'form':661 'format':2256,2260,2268 'found':443 'fresh':1472 'full':860,2314 'generat':1181 'get':320,344,431,609,843,1077,1102,1481,1652,1741,1763,1909,1927 'getitem':1074,1092,1117 'gotcha':1995 'graphuserdetailnotfound':2109,2302 'groupid':2284,2287 'guess':932 'guid':18,542,683,817,819,1184,1402,1407,1459,1473,2187 'hand':946 'hand-written':945 'handl':1161 'header':180 'helper':144 'hint':953,1012 'hit':2243 'host':752,792 'host.connectionname':1377,1390 'hosttempl':615,796 'http':219,673,882,924,1625,1673,1695,1790,1814,1828,1836,1861,1973,2166,2334,2351 'http-trigger':1694 'id':164,413,416,428,438,448,594,778,781,788,1133,1238,1243,1251,1280,1488,1521,1660,1684,1748,1774,1873,1888,1890,1903,1917,1936,1958,2184,2206 'ident':490 'import':146,1267 'includ':310 'inconsist':2181 'indic':1058 'input':1762,1862 'inputs.host.connectionname':805 'inputs/outputs':958 'insid':822 'intent':973 'invalid':1461 'invaliddefinit':1435 'invalidtempl':1434,2049 'invoc':2239 'invoic':1220,1885 'invok':787 'isoformat':1270 'item':1119,1127,1151 'item/title':2230 'iter':1756 'json':147,299,804,933,1441,2317 'json.dumps':161,237 'json.loads':226,241 'jsonrpc':162 'jwt':44 'keep':286 'key':184,508,516,810,957,1313,1326,1380,1393,1432 'kind':1860 'know':969 'known':601 'kwarg':159,172 'larg':452 'len':403 'level':1351 'like':1990 'link':517 'list':90,311,314,367,380,420,454,529,571,621,734,783,1150,1467,1538,2008 'live':312,315,318,321,325,345,368,381,421,432,455,530,572,622,735,784,844,941,981,1001,1031,1066,1078,1103,1159,1203,1274,1307,1331,1468,1482,1505,1510,1514,1592,1596,1609,1653,1677,1704,1723,1742,1768,1867,1897,1910,1928,1952,2009,2085,2095,2138 'load':61,257,268,281,335 'locat':2264,2266 'look':357 'lower':397,401 'mandatori':525,1544 'manual':1638,1754,1857 'manual.get':1761 'map':514,590,708,809,1088,1113,1388 'match':386,404,414,978 'may':107,457,837,1563,2126 'mcp':13,31,36,51,149,154,157,176,185,196,218,235,292,302,339,366,430,489,570,620,979,999,1029,1064,1076,1101,1201,1272,1341,1480,1512,1651,1675,1740,1766,1865,1895,1908,1926,1950,2150,2152,2359 'mcp.flowstudio.app':58,152 'mcp.flowstudio.app/mcp':151 'md':907 'mean':1317 'messag':1367,1568 'metadata':961 'metadata.operationmetadataid':2176 'method':166 'microsoftform':663 'miss':563,682,696,710,723,740,743,1371,1999,2013,2175 'mistak':1996,2290 'mode':372,385,470,477 'modifi':408 'multipl':1017 'must':38,527,806 'name':99,104,169,540,639,1688,1776,1940 'need':329,483,501,550,635,666,688,702,758,1025,1708,1825 'new':266,376,395,1172,1183,1211,1236,1787,1799,1877,2028,2033,2039,2189 'next':474,760,1059,1646,1755 'non':1789 'non-http':1788 'none':449,1227,1295,1316,2070 'note':118 'notif':1195,1221,1886 'null':1314,2047,2064 'oauth':715 'object':854,2107,2282 'obtain':495 'offic':2204 'office365':645,692,1007 'old':2026,2030,2041 'omit':676,1177,1208,1874,2211 'one':1358 'onedr':652 'onedriveforbusi':654 'op':998,1063,1097,1125 'op.get':1011 'oper':930,993,1015,1045 'operationid':1008,1038,1073,1091,1116 'operationopt':2012 'option':323,1052,1080,1130 'origin':1629,1716 'outlook':643,887,2339 'output':607 'outsid':332 'overdu':1219,1884 'overrid':2032 'own':1425 'owner':373 'parallel':2016 'param':168 'paramet':101,106,1049,1120,2259 'parameternam':1093,1118 'pars':883,2335 'pass':462,603,1347,1985,2291 'past':611,870 'paste-readi':610 'patch':1259 'patchitem':2210 'pattern':121,865,906 'payload':160,179,1631,1700,1713,1906,1994 'per':694 'placehold':2192 'plain':417,2111,2274,2308 'point':505,1970 'pointer':962 'post':1566 'postmessagetoconvers':1039,2254 'potenti':2046 'potentially-nul':2045 'power':3,8,23,49,2357,2368 'prefer':939 'prerequisit':33 'presenc':1323 'present':2060 'preserv':2182 'prevent':1998 'print':423,440,1010,1228,1246,1296,1302,1491,1536,1689,1758,1780 'prior':1602,1808 'product':1846,1851,1948,1992,2157 'programmat':27 'prompt':552 'properti':347,1055,1105,1143,1494,1533,1751 'properties.connectionreferences':841 'provid':1256 'publish':2246 'put':1188 'python':143,145,300,338,364,568,617,686,749,890,963,1026,1061,1189,1260,1315,1478,1649,1738,1850 'queri':305,342 'race':2018 'rais':215,232,737,1941 'rather':409 'raw':225,231,238,242,1401 're':732,1417,1465 're-check':1464 're-run':731,1416 'reachabl':40 'readi':612,915 'ready-to-us':914 'real':137,1559,2203 'recip':1849 'recipi':2105,2255 'recurr':671,921,1619,1667,1792,1800,2348 'reduc':606 'refer':74,497,751,771,866,1217,1285,1378,1882,1963,2310,2365 'references/action-patterns-connectors.md':885,2337 'references/action-patterns-core.md':873,2325 'references/action-patterns-data.md':879,2331 'references/build-patterns.md':911,2343 'references/flow-schema.md':857,2313 'references/trigger-types.md':2320 'relat':2353 'replac':214 'replay':1627 'repres':1987 'req':174,201 'request':1020,1859 'requir':560,713,2212,2226 'resolv':72,2201 'resp':199 'resp.read':227 'respons':115,139 'responsestatus':1784 'resubmit':1595,1608,1676,1691,1722,1811 'result':243,365,391,1200,1231,1244,1271,1299,1305,1674,1690,1765,1783,1864,1892,2056 'result.get':1223,1291,2066 'retriev':472 'return':240,383,458,545,951,1310,2299 'right':493 'run':733,1418,1549,1555,1598,1603,1611,1648,1650,1655,1664,1679,1686,1717,1725,1809,1907,1912,1921,1930,1938,2080 'runaft':1443 'runnam':1685,1937 'runtimeerror':216,233 'safeti':349 'sampl':1905 'save':2199,2214 'say':1047 'scenario':1822 'schedul':1647,2082 'schema':102,124,296,301,861,892,1362,1764,1863,2318 'schema.management.azure.com':894 'schema.management.azure.com/providers/microsoft.logic/schemas/2016-06-01/workflowdefinition.json#':893 'schema/field':1145 'scratch':446 'script':2205 'scriptid':2194 'search':93,134,304,341,374,604,626,964,985,1356 'see':45,855,899,903,909,2116 'select':343,728 'semicolon':2115,2279 'send':986,1564,1710 'sendemailv2':1009 'sequenti':2024 'server':32,37,110,270,293,1180,1337 'set':1504,1513,2084 'setup':55,2362 'shape':116,948,1146,1989 'share':627,641,644,647,650,653,656,659,662,689,691,813,1006,1036,1071,1084,1089,1109,1114,1397 'sharepoint':640,886,922,1136,1149,1193,1571,1620,1668,2209,2338 'sharepointonlin':628,642,690,1072,1085,1090,1110,1115 'show':1357 'side':1560 'singl':1168 'site':1075 'sites/lists':1137 'skill':52,91,113,306,2354 'skill-flowstudio-power-automate-build' 'solut':2123,2141 'solutionid':2145 'sourc':85,786 'source-github' 'sp':618,1062,1096,1124,2349 'specif':992 'spell':1450 'split':2043 'stabl':2186 'stale':2244 'start':1498,1523,1572,2090 'state':1490,1492,1495,1500,1507,1516,1522,2074,2087,2089,2098 'status':585,587,1782,1923 'step':15,17,801,1241,1419 'step-by-step':14 'still':1974 'stop':711,1502,2076 'string':2048,2112,2276,2309 'studio':2125,2232 'subscrib':56 'subsequ':1240 'succeed':1304 'success':1318 'suppli':2004 'swap':1843,2169 'syntax':1436,1446 'tabl':1122 'target':2144 'team':646,648,814,888,923,1027,1037,1139,1194,1398,1567,2100,2253,2340,2350 'teams/channels':1140 'tell':126 'templat':753,793,871,2323,2347 'temporari':1827,1835,2165 'test':84,1541,1548,1699,1777,1839,1894,1971,2151,2159 'testing/resubmitting':2250 'text':246 'thing':122 'time':2200 'timeout':202 'token':155,186 'tool':64,92,98,103,123,133,158,170,261,303,331,340,1060,1169,1355,2133,2364 'tools/call':167 'top':378,988,1350,1661,1918 'top-level':1349 'topic-agent-skills' 'topic-agents' 'topic-awesome' 'topic-custom-agents' 'topic-github-copilot' 'topic-hacktoberfest' 'topic-prompt-engineering' 'track':1344 'trail':2114,2278 'transform':881,2333 'treat':1321 'tri':198 'trigger':898,925,1546,1591,1605,1617,1630,1639,1670,1696,1703,1749,1753,1767,1794,1804,1829,1837,1847,1852,1854,1856,1896,1947,1949,1965,1993,2147,2158,2171,2321,2352 'trigger-types.md':900,2319 'trigger_live_flow.body':1988 'triggerbodi':1982 'triggernam':1693 'triggeroutput':1984 'triggers.values':1757 'triggers/actions':938 'true':1692,2061 'truth':87 'twin':2167 'type':189,1449,1606,1618,1858,2322 'ui':2178 'unchang':2225 'union':2025,2038 'unless':1354 'updat':324,1157,1158,1165,1202,1252,1263,1273,1288,1297,1303,1306,1509,1599,1866,1951,2094 'url':150,177,461 'urllib.error.httperror':205 'urllib.request':148 'urllib.request.request':175 'urllib.request.urlopen':200 'usag':1343 'use':476,832,917,1128,1141,1391,1422,1503,1607,1702,1730,1981,2037,2065,2093,2110,2148 'user':192,482,537,554,685,719,971,1411,1433,1552,1636 'user-ag':191 'user@contoso.com':2280,2293 'utf':211 'uuid':418 'valid':43,2196 'valu':548,616,827,1778,2031,2265 'variabl':874,2326 'variant':956,1019,1022,1040 'verifi':82,1475,1719 'version':111 'via':1187 'wait':1585,1643 'webhook':1622 'week':1192 'win':142,2036 'won':2078 'work':1614,1665 'workflow':59 'wrap':2051 'write':1569,2021 'written':947 'x':182,1430 'x-api-key':181,1429 'xxxx':252,253,254 'xxxxxxxx':251 'xxxxxxxxxxxx':255","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-05-18T18:52:11.589Z"},{"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-05-07T22:40:30.449Z"}],"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","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":"dbea0a054619d61e830bc8eeaf792bd7e1c0a030","skill_md_path":"skills/flowstudio-power-automate-build/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/github/awesome-copilot/tree/main/skills/flowstudio-power-automate-build"},"layout":"multi","source":"github","category":"awesome-copilot","frontmatter":{"name":"flowstudio-power-automate-build","description":">-"},"skills_sh_url":"https://skills.sh/github/awesome-copilot/flowstudio-power-automate-build"},"updatedAt":"2026-05-18T18:52:11.589Z"}}