Power Automate MCP Server by Flow Studio
Server Details
Debug, build, and manage Power Automate cloud flows with AI agents
- Status
- Healthy
- Uptime
- 100.0% over 60 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-03-26
- URL
- Repository
- ninihen1/power-automate-mcp-skills
- GitHub Stars
- 34
- Server Listing
- Flow Studio - Power Automate MCP Server
TDQS
Scored across 28 tools
Systematic overlap exists between live and store counterparts (e.g., get_live_flow vs get_store_flow, list_live_flows vs list_store_flows, list_live_environments vs list_store_environments), so multiple tools could be confused. Descriptions clearly state the data source and plan requirements, which helps, but the dual-surface redundancy is more than one or two pairs.
Names follow a clear verb_live_noun / verb_store_noun snake_case pattern that is highly predictable across the 28 tools. Minor deviations like 'tool_search' (noun_verb) and the lengthy 'add_live_flow_to_solution' slightly break the otherwise consistent convention.
With 28 tools, the surface exceeds the 25-tool threshold and feels heavy for an agent to navigate. The count is inflated by redundant live/store pairs and meta tools, even though grouping prefixes provide some organizational clarity.
Core flow lifecycle is largely covered: create/update via update_live_flow, read/get, list, start/stop, trigger, cancel, and resubmit runs. However, delete operations for flows and solution removal are missing, and there is no single-run detail tool beyond the error and action-output views.
Available Tools
30 toolsadd_live_flow_to_solutionAdd flow to solutionAIdempotentInspect
Move a flow into a solution. Refuses if the flow is already in one. solutionId is optional — omit for the default solution.
| Name | Required | Description | Default |
|---|---|---|---|
| flowName | Yes | Name (ID) of the flow to migrate into the solution. | |
| solutionId | No | Target solution ID (Dataverse solutionid GUID). Omit for the default solution. Discover IDs via resolve_live_parameters on shared_commondataserviceforapps/ListRecords with entityName "solutions" (value-path solutionid, value-title friendlyname); needs a Dataverse connection in the env. | |
| environmentName | Yes | Name of the Power Platform environment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral context beyond the annotations: the tool refuses when the flow is already in a solution, which tells the agent how failure states arise. Annotations already declare it is a non-destructive, idempotent write, so without a return format or permission requirements it lands at 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler. The core action leads, the failure condition follows, and the optional-parameter note closes it out.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter mutation with no output schema and full schema coverage, the description covers the action, a failure mode, and the optional parameter default. It could still note what the call returns or the connection prerequisites, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters including the discovery path for solutionId are already documented in the schema; the description only restates the optionality of solutionId. Baseline 3 applies when the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — moving a flow into a solution — which is unambiguous. No sibling tool performs a solution-assignment action, so differentiation is implicit rather than stated, keeping it at a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied; the description never says when an agent should reach for this tool versus other flow tools in the family. The 'omit for the default solution' note gives a small conditional hint but is not a when-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_live_flow_runCancel runADestructiveIdempotentInspect
Cancel a currently running Power Automate flow run via the live PA API. Use after get_live_flow_runs to obtain the run name. Only runs with status "Running" can be cancelled.
| Name | Required | Description | Default |
|---|---|---|---|
| runName | Yes | Run identifier (name field from get_live_flow_runs). | |
| flowName | Yes | Name (ID) of the flow. | |
| environmentName | Yes | Name of the Power Platform environment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety and repeat-call profile is covered structurally. The description adds a useful eligibility constraint (only 'Running' runs), but says nothing about side effects on the run itself (terminated vs. rolled back), partial results, or any permission requirements beyond the status check.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: the action, the upstream call, and the precondition. The core action is front-loaded and nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, idempotent mutation with only three well-documented parameters and no output schema, the description supplies the key operational context (prerequisite tool, eligibility rule). It is nearly complete, though it omits any note on the effect on the run or error behavior when the status precondition fails.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters carry descriptions, so the schema does the heavy lifting; baseline 3 applies. The description merely echoes that runName comes from get_live_flow_runs, which the schema already states, and adds no format, casing, or identifier details for environmentName/flowName.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Cancel a currently running Power Automate flow run') plus the scope qualifier 'via the live PA API', making it clearly distinct from siblings like resubmit_live_flow_run, trigger_live_flow, and set_live_flow_state. An agent can identify exactly what the tool operates on without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit prerequisite and sequencing rule ('Use after get_live_flow_runs to obtain the run name') and a precondition ('Only runs with status "Running" can be cancelled'), which tells the agent both when to call it and when it will fail. It stops short of naming a fallback when the precondition is unmet (e.g., what to do with non-Running runs), so it is a strong 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_live_connectionCreate connectionInspect
Create a connection, or sign an existing one in again (pass connectionName). Shows a sign-in card where the person signs in; you never sign in for them. Without the card, give the person signInLink to open. Connectors that use a key or account details instead of a sign-in are refused: create those in Power Automate.
| Name | Required | Description | Default |
|---|---|---|---|
| connectorName | Yes | Connector name, e.g. shared_sharepointonline. | |
| connectionName | No | An existing connection to sign in again, instead of creating one. | |
| environmentName | Yes | Name of the Power Platform environment. |
describe_live_connectorDescribe connectorRead-onlyInspect
Describe a live Power Platform connector/API and its operations. Use mode=summary (default) to get a compact operation catalog. Use operationId to describe one operation, including inputs, outputs, dynamic parameter metadata, nextTool hints to call resolve_live_parameters, and an authored hint + canonical example shape (when one exists) to copy into update_live_flow. Use search without connectorName/apiName to search operations across connectors and get connection-aware suggestions. Use mode=full only when raw OpenAPI connector metadata is required.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Max operations to return in connector summary mode, or max top search results to show in cross-connector search. Default 250 for summary, 10 for search display. | |
| type | No | Operation usage to include in summary mode. Default Action. | |
| depth | No | summary (default): compact operation catalog. full: raw OpenAPI metadata. | |
| search | No | Optional operation search text. With connectorName, filters that connector summary. Without connectorName, searches operations across connectors. | |
| apiName | No | Alias for connectorName. | |
| variant | No | When an operation has multiple authored variants (e.g. shared_teams/PostMessageToConversation has channel/groupchat/flowbot_chat), pass a specific variantKey to get that variant's hint and exampleDefinition. Omit to receive a hint listing the available variants. | |
| operationId | No | Optional operation ID to describe with expanded inputs and outputs. | |
| connectorName | No | Connector logical name, for example shared_teams. Either connectorName/apiName is required, unless search is provided for cross-connector operation search. | |
| environmentName | Yes | Name of the Power Platform environment. |
get_live_flowGet flow definitionARead-onlyInspect
Fetch the full native Power Automate flow JSON from the PA API, including the complete flow definition (triggers, actions, parameters, outputs). Returns the raw properties object exactly as the PA API returns it. Use this to inspect the full definition before calling update_live_flow with a modified definition.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | full (default): the whole definition. summary: the action tree — name, type, operation, runAfter, nesting — with no inputs. Use summary on a large flow, then ask for the actions you need. | |
| actions | No | Return only these actions, found at any nesting depth and each reported with the scopes it sits in, plus triggers. Combine with depth:"summary" to get the tree as well. | |
| flowName | Yes | Name (ID) of the flow. | |
| environmentName | Yes | Name of the Power Platform environment. | |
| includeTriggerUrl | No | Also return the HTTP trigger URL. It is a credential: anyone holding it can run the flow. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds real context beyond them: it returns 'the raw properties object exactly as the PA API returns it' (no normalization), and the includeTriggerUrl credential warning is reinforced in the schema. It does not discuss size/rate limits for very large flows outside the depth hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no filler: what it fetches, the exact return shape, and the intended workflow use. The most decision-relevant information (raw native definition, use before update) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by stating the return is the raw PA properties object covering triggers/actions/parameters/outputs. Combined with 100% schema coverage and the readOnly annotations, an agent has enough to call it correctly. The only minor gap is guidance on handling very large flows, partly mitigated by the depth enum in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema itself documents depth, actions, includeTriggerUrl, flowName and environmentName in detail, including the credential nature of the trigger URL. The description only generally restates what the definition contains ('triggers, actions, parameters, outputs'), adding little beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch the full native Power Automate flow JSON from the PA API') and enumerates what the definition contains (triggers, actions, parameters, outputs). This distinguishes it from list_live_flows and the store-flow siblings, which return summaries or store metadata rather than the raw native definition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Use this to inspect the full definition before calling update_live_flow with a modified definition.' That names the sibling and the workflow context. There is no explicit when-not guidance (e.g., when to prefer the summary depth or a store-flow variant), which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_live_flow_run_action_outputsGet run action inputs and outputsARead-onlyInspect
Read the recorded inputs and outputs of actions in one flow run. Without actionName: the top-level actions (optionally filtered by name). With actionName: every execution of that action across foreach iterations, each with repetitionIndexes, status, error, and resolved inputs/outputs. Use iterationIndex to pin one iteration; omit it for all. TRIGGER PAYLOADS: set trigger=true with a runName to get that run's trigger inputs and outputs. No Compose workaround is needed. TRIGGER CHECKS: pass checkId (from get_live_flow_runs -> triggerChecks.recent[].checkId) to read a trigger evaluation that never became a run — that is how you see WHY a trigger is failing. Do not supply runName with a checkId.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Max actions or repetitions to return. Paginates automatically. Omit for all. | |
| checkId | No | Trigger check id (checkId from get_live_flow_runs -> triggerChecks). Returns that check's inputs/outputs, including the failure reason. Not a run id — the two are different, which is why a check id returns WorkflowRunNotFound from the run tools. | |
| runName | No | Run identifier (name field from get_live_flow_runs), or "latest" for the most recent run. Required unless checkId is given. | |
| trigger | No | Return the RUN's trigger inputs/outputs instead of its actions. Requires runName. | |
| flowName | Yes | Name (ID) of the flow. | |
| actionName | No | Action name. Without iterationIndex: returns all repetitions of this action across every foreach iteration. With iterationIndex: returns the single repetition matching that iteration. Omit entirely for top-level action list. | |
| iterationIndex | No | Zero-based foreach iteration index. Matched against the innermost repetitionIndexes[].itemIndex in the PA repetition record. Only meaningful when actionName is also set. | |
| environmentName | Yes | Name of the Power Platform environment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/safe profile, and the description adds substantial context beyond them: what a repetition record contains (repetitionIndexes, status, error, resolved inputs/outputs), the "no Compose workaround needed" note, and why a checkId yields WorkflowRunNotFound from run tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and every clause carries information, but the ALL-CAPS labels (TRIGGER PAYLOADS, TRIGGER CHECKS) and multiple clauses make it denser than strictly necessary. Sized reasonably for an 8-parameter tool with interacting modes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must convey returns, and it does name the key fields (repetitionIndexes, status, error, resolved inputs/outputs). The exact response envelope/shape is only sketched, leaving minor gaps for an 8-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter meaning the schema can't: the actionName/iterationIndex interaction and the runName-vs-checkId distinction with its error consequence. It stops short of richer format/syntax detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Read the recorded inputs and outputs of actions in one flow run") and immediately distinguishes scoping modes: top-level actions without actionName vs. all foreach repetitions with actionName. This differentiates it cleanly from siblings like get_live_flow_run_error and get_live_flow_runs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use guidance for every mode: iterationIndex to pin one iteration, trigger=true for trigger payloads, checkId for trigger evaluations that never became runs, plus a named source (get_live_flow_runs -> triggerChecks) and an exclusion ("Do not supply runName with a checkId").
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_live_flow_run_errorGet run errorARead-onlyInspect
Fetch error details for a specific flow run from the live Power Automate API. Lists every failed action with its error code and message to help diagnose what went wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Max actions to return. Paginates automatically. Omit for all. | |
| runName | Yes | Run identifier (name field from get_live_flow_runs), or "latest" for the most recent run. | |
| flowName | Yes | Name (ID) of the flow. | |
| environmentName | Yes | Name of the Power Platform environment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description usefully discloses that it hits the live Power Automate API and that results are per failed action, but says nothing about rate limits, empty-result behavior, or error cases for the call itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core purpose and the payload shape front-loaded; nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only diagnostic tool with no output schema, the description gives an adequate picture of what comes back and the schema fully documents inputs. Minor gap: no guidance on what to do with a successful run (no failures) or how errors in the lookup itself surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (including the 'latest' shortcut and auto-pagination for top) are already documented in the schema. The description adds no parameter-level meaning beyond that, which is the expected baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Fetch) and resource (error details for a specific flow run) and even describes the return payload — failed actions with error code and message. This implicitly separates it from get_live_flow_runs (lists runs) and get_live_flow_run_action_outputs, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to help diagnose what went wrong' implies a debugging context, but there is no explicit when-to-use vs. when-not, no mention of the alternative tools for run data, and no stated prerequisites (e.g., run must have failed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_live_flow_runsList flow runsARead-onlyInspect
Fetch run history for a flow directly from Power Automate. Returns { runs, runCount, triggerChecks }: each run has name, status, startTime, endTime, trigger name/code, and any top-level error. IMPORTANT — no runs does NOT mean the flow is healthy. A trigger that fires and evaluates to nothing, or fails to evaluate, records a TRIGGER CHECK and never becomes a run. When there are no runs (or when includeTriggerChecks is set) this tool also reports the trigger check history, so "nothing ran" can be told apart from "the trigger has been failing". Read triggerChecks.byStatus before concluding a flow is fine.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Max runs to return. Paginates automatically. Default 30. | |
| flowName | Yes | Name (ID) of the flow. | |
| environmentName | Yes | Name of the Power Platform environment. | |
| includeTriggerChecks | No | Also report trigger check history when runs DO exist. Checks are always reported when there are no runs. Costs two extra API calls. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description goes far beyond that by disclosing the return shape, the critical caveat that no runs does not mean the flow is healthy, the trigger-check mechanism, and the extra API-call cost of includeTriggerChecks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, then return shape, then the important caveat. Most sentences earn their place, but there is mild redundancy in the two sentences explaining trigger checks, and the warning could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description adequately explains the return object (runs, runCount, triggerChecks) and the fields of each run. It also covers the critical interpretation nuance about trigger checks, leaving nothing essential missing for correct invocation and understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds real meaning for includeTriggerChecks by explaining when trigger check history is returned and why it matters (distinguishing 'nothing ran' from 'the trigger is failing'), which goes beyond the schema's brief note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Fetch) and resource (run history for a flow) and sources it to Power Automate, which implicitly separates it from store-flow siblings. However, it never explicitly names or contrasts with siblings like get_live_flow_run_error or get_store_flow_runs, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use versus alternatives; the agent must infer that this tool is for retrieving run history. The directive 'Read triggerChecks.byStatus before concluding a flow is fine' is a useful scenario cue, but it does not guide selection among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_store_flowGet cached flowARead-onlyInspect
[Requires Pro+ plan] Get full details for a single Power Automate flow from the Power Clarity cache. Includes trigger URL, owners, state, run statistics, and governance metadata. Data is from the stored snapshot — not live from the Power Automate API.
| Name | Required | Description | Default |
|---|---|---|---|
| flowName | Yes | Name (ID) of the flow. | |
| environmentName | Yes | Name of the Power Platform environment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds material context beyond them: a Pro+ plan entitlement requirement and the important staleness caveat that the data is a cached snapshot rather than a live read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences with no waste: entitlement flag, core purpose, and the snapshot caveat in descending order of importance. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by enumerating the returned fields. Combined with the entitlement and caching notes, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so flowName and environmentName are already documented in the schema. The description lists output fields rather than adding syntax or semantics for the two parameters, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource — 'Get full details for a single Power Automate flow from the Power Clarity cache' — and enumerates the payload (trigger URL, owners, state, run statistics, governance metadata). It also distinguishes itself from the live siblings by noting data comes from a snapshot, not the live API.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'stored snapshot — not live from the Power Automate API' clause gives a clear context for when this is the right tool versus a live-fetch sibling like get_live_flow. It stops short of naming that alternative or stating exclusions explicitly, so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_store_flow_runsGet cached run historyARead-onlyInspect
[Requires Pro+ plan] Get cached run history for a flow from the Power Clarity store. Defaults to the last 7 days. Returns startTime, endTime, status, duration (seconds), failedActions, and remediation hint per run. Data is from the stored snapshot — not live from the Power Automate API.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Maximum number of run rows to return (default 5000). | |
| status | No | Filter by status. Only the first value is used in the OData filter. | |
| endTime | No | ISO 8601 end of the time window. | |
| flowName | Yes | Name (ID) of the flow. | |
| startTime | No | ISO 8601 start of the time window (default: 7 days ago). | |
| environmentName | Yes | Name of the Power Platform environment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), and the description adds real context beyond them: a plan gate, the fact that results come from a stored snapshot rather than the live API, and the default time window. It does not disclose truncation or pagination behavior for the 5000-row cap, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the plan requirement, then purpose, then scope/default, then return shape. No redundancy or filler; each sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the per-run fields returned and warns that data is snapshot-based, which is exactly what an agent needs before calling. It omits that results can be capped by the default top=5000, a minor gap for a read tool whose safety profile is already in annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters including defaults and the status enum behavior. The description only restates the 7-day default window and lists returned fields, adding little parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get cached run history for a flow from the Power Clarity store') and uses 'cached' plus 'not live from the Power Automate API' to separate it sharply from sibling get_live_flow_runs. An agent can pick between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the prerequisite ([Requires Pro+ plan]), the default window (last 7 days), and the key selection condition — use this for stored snapshot data rather than live API data. It stops short of explicitly naming get_live_flow_runs as the alternative when freshness is required, so it is clear context without a hard exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_store_flow_summaryGet cached run summaryARead-onlyInspect
[Requires Pro+ plan] Get aggregated run statistics for a flow from the Power Clarity cache: total runs, success count, failure count, success rate, fail rate, and average/max duration over a time window. Data is from the stored snapshot — not live from the Power Automate API.
| Name | Required | Description | Default |
|---|---|---|---|
| endTime | No | ISO 8601 end of the time window. | |
| flowName | Yes | Name (ID) of the flow. | |
| startTime | No | ISO 8601 start of the time window (default: 7 days ago). | |
| environmentName | Yes | Name of the Power Platform environment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the description's added value is the plan gating and the key staleness disclosure that the data comes from a cache snapshot rather than live API. That is genuinely useful behavioral context an agent could not infer from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler; the plan requirement and cache-vs-live caveat are front-loaded rather than buried. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description explicitly enumerates the returned metrics, so the agent knows exactly what it gets back. Combined with the plan gate, time-window scope, and cache caveat, nothing needed to call or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the startTime default of '7 days ago', so the schema already documents all four parameters. The description only says 'over a time window' and adds no format or semantics beyond the structured fields, matching the baseline 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Get aggregated run statistics for a flow') with an enumerated list of the exact metrics returned (runs, success/failure counts, rates, avg/max duration). The 'aggregated ... from the cache' framing lets an agent separate this from raw-run siblings like get_store_flow_runs without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clarifies the data source boundary ('stored snapshot — not live from the Power Automate API'), which implicitly routes the agent to live-API siblings when freshness is needed, and states a prerequisite ('[Requires Pro+ plan]'). It stops short of naming the alternative tool explicitly or stating when-not-to-use beyond the staleness caveat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_store_makerGet makerARead-onlyInspect
[Requires Pro+ plan] Get details for a single maker from the Power Clarity cache by their key (usually the AAD object ID). Includes flow/app counts and whether the account has been deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| makerKey | Yes | Maker RowKey (AAD object ID of the user). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false). The description adds genuinely useful context beyond that: a Pro+ plan gate, that results come from a cache (implying possible staleness), and that the payload includes flow/app counts and an account-deleted flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the plan requirement front-loaded and zero filler. Every clause carries information the agent can act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description compensates by naming the key return contents (flow/app counts, deleted-account status). For a single-parameter read tool, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so makerKey and its AAD object ID meaning are fully documented in the schema. The description's '(usually the AAD object ID)' only marginally reinforces what the schema already states, landing at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Get details') and resource ('a single maker'), plus the lookup key and data source ('Power Clarity cache'). It implicitly separates itself from the sibling list_store_makers by specifying a single maker, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a real prerequisite ('[Requires Pro+ plan]') and reveals that the lookup goes through a cache, which hints at when it is appropriate. However, it never says when to prefer this over list_store_makers or get_store_flow, leaving alternative selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_live_connectionsList connectionsARead-onlyInspect
List Power Platform connections in an environment directly from Power Automate. Returns id, displayName, connectorName, environment, createdBy (full object), authenticatedUser, statuses, overallStatus, createdTime, expirationTime, and connectionParameters for each connection. Pass search= to narrow the list and receive a paste-ready connectionReferenceTemplate plus action-side hostTemplate per connection — drop these into update_live_flow's connectionReferences and inputs.host without further edits.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Max connections to RETURN, applied after search. Paginates automatically. Omit for all. | |
| search | No | Optional case-insensitive substring filter applied to id, displayName, connectorName, and accountName. Adds connectionReferenceTemplate + hostTemplate to each returned connection. | |
| environmentName | Yes | Required. Name of the Power Platform environment (a GUID, or a name like "Default-<tid>"). Call list_live_environments if you do not have one — the platform cannot list connections across environments. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), but the description adds behavior the annotations cannot: the exact returned field set and the search-triggered side effect that each connection gains a paste-ready connectionReferenceTemplate plus hostTemplate. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and tightly packed, but the long enumeration of return fields makes the opening sentence dense. Since there is no output schema the list earns its place; it is still slightly list-heavy rather than prose-efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema present, the description carries the return shape, the search-triggered enrichment, and the downstream integration target. Nothing an agent needs to call this correctly or use its result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description earns above it by explaining the intent behind search (produces templates that drop straight into update_live_flow) rather than restating the parameter. It omits detail on top's pagination ordering beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: 'List Power Platform connections in an environment directly from Power Automate.' The scope phrase separates it from the store-side sibling list_store_connections and from list_live_environments, so an agent picks the right list tool without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage direction: pass search=<term> to narrow the list, and names the downstream consumer (update_live_flow's connectionReferences and inputs.host). It does not state an explicit when-not or contrast against list_store_connections, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_live_environmentsList environmentsARead-onlyInspect
List all Power Platform environments you belong to, directly from Power Automate. Returns id, displayName, sku, location, and state for each environment. mode=all (default) and mode=member: every environment you are a member of. mode=admin: only those you administer; errors rather than guessing if admin access cannot be determined. isAdmin means you hold the ListAnyFlow permission there — the capability list_live_flows mode=admin needs. It is null, never false, when the platform did not tell us. isMember is true for every environment returned.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Max environments to return. Paginates automatically. Omit for all. | |
| mode | No | all (default) and member: every environment you belong to. admin: only those where you hold ListAnyFlow; errors rather than returning a shorter list if admin access cannot be determined. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/non-destructive safety, yet the description adds genuinely non-obvious behavior: admin mode errors rather than returning a short list, isAdmin is null never false when the platform is silent, and isMember is always true. This is exactly the edge-case context an agent needs to interpret results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and return fields, then layers mode semantics and field-flag caveats in a tight sequence. Some mode wording is duplicated verbatim between description and schema, which is the only waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and discharges it fully: it names the returned fields, explains pagination via 'top', and clarifies the isAdmin/isMember flag semantics. Nothing needed to call or interpret this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the mode enum is fully documented in the schema; the description largely restates the same mode definitions. It adds a little by tying admin mode to the ListAnyFlow permission, but for the two parameters the schema does the heavy lifting, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all Power Platform environments you belong to, directly from Power Automate') and immediately enumerates the returned fields (id, displayName, sku, location, state). An agent knows exactly what this returns and how it differs from flow/connection listing siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The three modes are spelled out with their selection conditions (member = environments you belong to; admin = only those you administer), and it cross-references list_live_flows mode=admin which needs this capability. It stops short of naming alternative tools such as list_store_environments, so no explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_live_flowsList flowsARead-onlyInspect
List Power Automate flows in an environment. Returns id, displayName, state, triggerType, and lastModifiedTime for each flow. mode=owner (default): flows you own plus flows shared with you (personal + team), with full definitions. mode=admin: all flows in the environment (requires an admin account). mode=admin with includeDeleted=true also returns soft-deleted flows (state=Deleted) — the only way to find a deleted flow. If search is provided, results are filtered to flows whose displayName contains the search text. For large environments pagination is time-bounded — if nextLink is returned, pass it as continuationUrl to retrieve the next batch.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Max flows to return. Paginates automatically. Omit for all. | |
| mode | No | owner (default): user-scoped — owned + shared-with-me flows (personal + team), with full definitions. admin: admin-scoped endpoint, all flows. | |
| search | No | Optional case-insensitive filter applied to flow displayName. | |
| includeDeleted | No | Include soft-deleted flows, which come back with state=Deleted and can be restored with restore_live_flow. Requires mode=admin — the user-scoped listing never returns deleted flows. Off by default. | |
| timeoutSeconds | No | Stop collecting pages after this many seconds and return a nextLink for the next batch. Default 25. Max 55. | |
| continuationUrl | No | nextLink value returned by a previous call. Pass to resume pagination from where the last call stopped. Must match the same mode as the original call. | |
| environmentName | Yes | Name of the Power Platform environment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the readOnly/destructive annotations: admin mode requires an admin account, deleted flows only surface via admin+includeDeleted, and pagination is time-bounded with a continuationUrl for resumption. It does not mention rate limits or result-size limits, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose then return fields, followed by mode semantics, filtering, and pagination in a logical order. Dense but nearly every sentence earns its place; the mode explanation is stated twice (sentence and schema) which is slight redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by naming the returned fields, and it covers the pitfalls an agent needs: admin requirement, deleted-flow access, and continuation-based pagination. Nothing essential for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already carries a detailed description, so the schema does the heavy lifting. The description largely restates mode/search/includeDeleted semantics rather than adding new syntax or format detail, matching the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('List Power Automate flows in an environment') and enumerates the returned fields (id, displayName, state, triggerType, lastModifiedTime). This clearly separates it from get_live_flow and the list_store_flows sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Strong condition-based guidance: mode=owner for own/shared flows, mode=admin for environment-wide (requires admin account), and includeDeleted=true as 'the only way to find a deleted flow'. It does not address sibling alternatives like list_store_flows, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_skillsList skill bundlesARead-onlyInspect
Skill bundles: groups of the tools listed here that are used together for one task (diagnose-connection-references, build-flow, debug-flow, monitor-flow, discover, governance). Returns each bundle's one-line description and tool names. Use it when unsure which tools fit a request; tool_search "skill:" returns the bundle's full guidance and definitions. Non-billable.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint/destructiveHint/openWorldHint, so the safety profile is handled. The description adds genuinely new context beyond them: the return shape (one-line description plus tool names per bundle) and the non-billable cost note, which matters for an agent deciding whether to call it. It doesn't need to cover auth or rate limits for a zero-param listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the definition, then the return shape, then the usage rule and alternative, ending with the cost note. Every sentence does work; the bundle-name enumeration is directly useful for routing rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description explicitly says what is returned (each bundle's one-line description and tool names) and where to get deeper definitions. With zero parameters and annotations covering safety, nothing needed to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the baseline of 4 applies. The description correctly avoids inventing parameter detail and instead spends its words on what the empty-input call yields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (skill bundles), then defines what a bundle actually is and enumerates the available ones. This is clearly distinguishable from siblings like tool_search, which the description explicitly contrasts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use it when unsure which tools fit a request') and names the alternative with exact syntax ('tool_search "skill:<name>"') plus what that alternative returns instead. Nothing about tool selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_store_connectionsList cached connectionsARead-onlyInspect
[Requires Pro+ plan] List all Power Platform connections from the Power Clarity cache.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds two genuinely new facts: an entitlement gate (Pro+ plan) and that results come from a cache rather than live data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence; the entitlement requirement is front-loaded in brackets and the scope follows immediately. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool with annotations carrying the safety profile and no output schema, this covers the essentials (what, source, plan gate). The only real gap is failing to note that cached results may be stale relative to list_live_connections.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics for the description to compensate for. The 4 baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (Power Platform connections) plus the data source (Power Clarity cache), which implicitly distinguishes it from the sibling list_live_connections. It stops short of naming that alternative explicitly, so an agent must infer the cache-vs-live split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only contextual cue is the '[Requires Pro+ plan]' tag. There is no guidance on when to prefer cached connections over list_live_connections, nor any freshness/staleness caveat that would let an agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_store_environmentsList cached environmentsARead-onlyInspect
[Requires Pro+ plan] List all Power Platform environments from the Power Clarity cache.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely new context beyond that: the Pro+ plan gating and the fact that results come from a cache rather than live state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the plan constraint front-loaded in brackets. Nothing is redundant and nothing needs trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool with annotations covering safety, the definition is nearly sufficient. The remaining gap is cache freshness — the description says results are cached but not how stale they might be or whether a refresh is possible, which matters for a cached-data tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to convey and the baseline of 4 applies. The description correctly avoids inventing filtering options that the schema does not support.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List all Power Platform environments") and qualifies the source as the Power Clarity cache, which implicitly separates it from the live sibling (list_live_environments). It does not name that sibling explicitly, so the differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The "[Requires Pro+ plan]" tag gives a real prerequisite, but there is no explicit guidance on when to prefer this cached listing over list_live_environments. Usage is implied by the word "cache" rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_store_flowsList cached flowsARead-onlyInspect
[Requires Pro+ plan] List Power Automate flows from the Power Clarity cache. Optionally filter by governance flags (monitor, notification rules). Returns key fields including trigger URL, state, and run failure rate. Data is from the stored snapshot — not live from the Power Automate API.
| Name | Required | Description | Default |
|---|---|---|---|
| monitor | No | If set, only return flows where monitor equals this value. | |
| rule_notify_onfail | No | If set, filter flows by whether on-fail notifications are enabled. | |
| rule_notify_onmissingdays | No | If set, filter flows by whether missing-days notifications are enabled. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world). The description adds genuinely useful context beyond them: the Pro+ plan gate and the important warning that data comes from a stored snapshot and may be stale relative to the live API.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each carrying distinct information: plan requirement, action and source, filterable facets, return fields, and the staleness caveat. Front-loaded with the gating requirement and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully enumerates key returned fields (trigger URL, state, run failure rate) and clarifies the data's freshness. It does not mention result limits or pagination, which is a minor remaining gap for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each filter parameter is already fully documented in the schema. The description only groups them under 'governance flags (monitor, notification rules)', adding minimal meaning beyond the structured fields, which matches the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list Power Automate flows), names the data source (Power Clarity cache), and explicitly contrasts it with live API data, which cleanly separates it from siblings like list_live_flows and get_live_flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a prerequisite ([Requires Pro+ plan]) and clarifies the cache-vs-live distinction so the agent knows this returns snapshot data rather than fresh results. It never names the live alternative explicitly ('use list_live_flows when you need current state'), so it falls just short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_store_makersList makersARead-onlyInspect
[Requires Pro+ plan] List all makers (citizen developers / AAD users) from the Power Clarity cache.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only, closed-world profile. The description goes beyond them by disclosing a licensing prerequisite (Pro+ plan) and the provenance of the data (served from the Power Clarity cache), which is actionable context an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the gating prerequisite front-loaded in brackets and no filler. Every clause (verb, resource, gloss, source) carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter read-only listing tool with annotations covering the safety profile and no output schema to explain, the definition is nearly sufficient. It stops just short of noting result ordering, size, or whether the cache can be stale, which is the only remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify beyond what the empty schema already communicates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('List all makers') with a clarifying gloss of the domain term ('citizen developers / AAD users') and the data source (Power Clarity cache). It reads as the plural counterpart to the sibling get_store_maker, though it never explicitly names that alternative to disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The '[Requires Pro+ plan]' prefix is a genuine prerequisite that tells the agent when the call is even permitted, which is more than most list tools offer. However, there is no explicit guidance on when to use this versus get_store_maker for a single maker or the other list_store_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_store_power_appsList cached appsARead-onlyInspect
[Requires Pro+ plan] List all Power Apps canvas apps from the Power Clarity cache.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuine context beyond that: the Pro+ plan licensing requirement and the fact that results come from a cache (implying possible staleness and no live refresh), which are behavioral traits the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler. The plan prerequisite is front-loaded in brackets, though placing the conditional bracket ahead of the actual purpose is slightly less ideal than leading with the verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema list tool the description is close to sufficient. It still omits what the returned apps contain (names, ids, connection references) and whether the cache list is paginated or filtered, so an agent cannot fully anticipate the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to clarify; the baseline of 4 applies. Adding parameter detail would be meaningless here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'List all Power Apps canvas apps'. 'Power Apps canvas apps' is distinct from the sibling list_store_flows/connections/makers tools, so an agent can differentiate. However it never names a sibling explicitly and the 'from the Power Clarity cache' phrasing adds ambiguity rather than precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance relative to the many sibling list_store_* tools. The only conditional information is the '[Requires Pro+ plan]' prerequisite, which is a gating requirement, not usage guidance about selecting this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_bugReport a bugBInspect
Report a Flow Studio MCP bug or missing capability, append text evidence, or check your reports. Free and available even after quota is reached. Do not include passwords, access tokens, secrets, or full flow definitions unless necessary.
| Name | Required | Description | Default |
|---|---|---|---|
| chunk | No | Optional. Omit to append the next chunk automatically. | |
| action | Yes | ||
| notify | No | ||
| ticket | No | ||
| content | No | Text attachment body. Max 64 KB per call. | |
| details | No | ||
| summary | No | ||
| category | No | other | |
| severity | No | major | |
| file_name | No | ||
| flow_name | No | ||
| tool_name | No | ||
| final_chunk | No | ||
| content_type | No | Media type of the attachment. text/plain (default), text/csv, text/markdown, application/json, application/har+json, application/xml, image/png, image/jpeg, image/gif, image/webp, application/pdf. | |
| contact_email | No | ||
| content_base64 | No | Binary attachment body, base64-encoded. Max 256 KB decoded per call. Use for images/PDF; pass text through `content` instead. Do not send both. | |
| environment_name | No | ||
| include_diagnostics | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is already covered. The description adds genuinely useful context beyond that: quota-independent availability and a security warning against including secrets. However, it omits key behavioral traits like the chunking workflow (chunk/final_chunk), what 'notify' and 'include_diagnostics' do, and workflow sequencing across the append actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core capabilities and followed by the security caveat. Efficient for the tool's breadth, with no filler, though the action list could be sharpened to match the enum exactly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 18-parameter, multi-action tool with chunked uploading and no output schema, the description is under-developed. It never explains the report/append/status/list workflow, chunk sequencing, or the purpose of most parameters, so an agent would have to infer a lot from a sparse schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 22% for 18 parameters, so the description must compensate and largely does not. It hints at the text-attachment path ('append text evidence') and warns about sensitive content, but leaves most parameters (ticket, notify, severity, category, environment_name, flow_name, tool_name, include_diagnostics, final_chunk, etc.) unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names concrete verbs and resources: reporting a bug or missing capability, appending text evidence, and checking reports. This maps reasonably to the multi-action enum (report/append/status/list) and is clearly distinguishable from the flow-oriented siblings. It loses a point because the four enum actions (especially the distinction between 'status' and 'list') aren't disambiguated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by listing the three things you can do, and it notes the tool is 'Free and available even after quota is reached,' which is a useful when-to-use signal. There are no explicit exclusions or alternative routing, but no realistic siblings compete with it either.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_live_parametersResolve action inputsRead-onlyInspect
Resolve a connector action's inputs the way the flow designer does: dropdown options, list and table columns, folder and file pickers — every input in one call, or one with parameterName. Reads only: it runs the lookups the designer runs, never an action. Pass values you have in parameters; pass a display name in match to get back the value to write into the flow. An input whose parent is not known yet has status "needs". Inputs inside an object are addressed by key (body/recipient/groupId). Omit connectionName and one is chosen.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Max options per dropdown (default 200). A longer list is marked truncated. | |
| match | No | Exact display name, or the value itself, per input, e.g. { "folderPath": "Inbox" }. Case-insensitive, never fuzzy. Folders also take /path. matchCount 0 answers status "nomatch". | |
| browse | No | Open a folder: { "field": "<input>", "id": "<folder value>" }. | |
| detail | No | Column detail. Default compact. | |
| search | No | Narrow long option or column lists by name (a filter, not a pick). | |
| apiName | No | Alias for connectorName. | |
| include | No | Add "outputs" to get the fields this action returns. | |
| flowName | No | With actionName: take the connector, operation and connection from this flow action. | |
| actionName | No | Action (or trigger) name in flowName. | |
| parameters | No | Values already chosen, e.g. { "dataset": "<site url>" }. | |
| operationId | No | Operation ID, e.g. PostItem. Not needed with flowName + actionName. | |
| connectorName | No | Connector name, e.g. shared_sharepointonline. | |
| parameterName | No | Resolve only this input. Omit for every input. | |
| connectionName | No | Connection to run as. Omit to have one chosen. | |
| environmentName | Yes | Name of the Power Platform environment. |
resubmit_live_flow_runResubmit runAInspect
Resubmit a failed or cancelled Power Automate flow run via the live PA API, re-using the original trigger payload. Discovers the trigger name from the flow definition automatically — no trigger name parameter needed.
| Name | Required | Description | Default |
|---|---|---|---|
| runName | Yes | Run identifier (name field from get_live_flow_runs), or "latest" for the most recent run. | |
| flowName | Yes | Name (ID) of the flow. | |
| environmentName | Yes | Name of the Power Platform environment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-read-only, non-idempotent, open-world, non-destructive; the description adds valuable behavior beyond that — it reuses the original trigger payload and auto-discovers the trigger name. It still omits whether a new run ID is created, what failure returns, or any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and scope, followed by the mechanism and the parameter-elimination note. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation tool with no output schema, the description covers purpose, precondition, and payload handling adequately. It leaves minor gaps around post-resubmit behavior and error cases, but nothing an agent must know to invoke it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (including the 'latest' shorthand for runName), so the baseline is 3. The description's note that no trigger-name parameter is needed adds context but is behavioral rather than clarifying an existing parameter's meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Resubmit a failed or cancelled Power Automate flow run') plus the key scope constraint (only failed or cancelled runs) and the mechanism (live PA API, re-using the original trigger payload). This cleanly separates it from siblings like trigger_live_flow (creates a new run) and cancel_live_flow_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: use it on a failed or cancelled run, and the original payload is reused rather than supplied. It does not explicitly name alternatives (e.g., trigger_live_flow for a fresh run) or state what happens if the run isn't in a resubmittable state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_live_flow_stateTurn flow on or offBIdempotentInspect
Start or stop the flow you name. Reads the current state first and only calls Power Automate if a change is actually needed.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | Desired state for the flow. | |
| flowName | Yes | Name (ID) of the flow. | |
| environmentName | Yes | Name of the Power Platform environment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, but the description adds real interpretation: it reads current state and skips the Power Automate call when no change is needed. That explains why the operation is idempotent and what actually happens on a no-op, which the hint alone does not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action front-loaded, with no restatement of the title. Minor waste in 'the flow you name,' which merely gestures at a parameter the schema already names precisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation with no output schema, the description covers what it does and the no-op behavior but says nothing about the outcome the agent gets back (confirmation, prior state, error on bad flow name). Adequate but with a visible gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all three parameters documented, including the Started/Stopped enum, so the schema carries the load and baseline 3 applies. The description adds only the vague phrase 'the flow you name' and nothing about environmentName or accepted state values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair and resource ('Start or stop the flow you name'), so an agent knows this flips a named flow's state rather than describing or triggering it. It does not differentiate itself from siblings like trigger_live_flow or update_live_flow, which is the only thing keeping it off a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to reach for this versus trigger_live_flow (run once) or update_live_flow (configuration change). The 'only calls Power Automate if a change is needed' sentence is behavioral detail, not a usage condition or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_live_connectionTest connectionInspect
Test a connection, or run one operation on it. Without operationId it runs the connector's own connection test. With operationId it runs that operation and returns the raw reply: a GET operation, or a lookup the connector itself declares for a dropdown, list, schema or folder picker. Anything else is refused before a call is made. connectionName comes from list_live_connections; operation ids from describe_live_connector.
| Name | Required | Description | Default |
|---|---|---|---|
| parameters | No | The operation's inputs by name (path, query, header or body). | |
| operationId | No | Omit to run the connector's own connection test. | |
| connectorName | Yes | Connector name, e.g. shared_sharepointonline. | |
| connectionName | Yes | The connection, from list_live_connections. | |
| environmentName | Yes | Name of the Power Platform environment. |
tool_searchSearch toolsARead-onlyInspect
Find a tool listed here instead of guessing its name, and get its definition. Query forms: (1) "skill:" — a whole bundle; call list_skills for the names; (2) "select:name1,name2" — exact tools; (3) free text like "cancel run" — ranked against name and description. Non-billable.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query. Forms: "select:name1,name2", "skill:<name>", or free-text keywords. | |
| max_results | No | Max tools to return for keyword queries (default 5). Ignored for select: and skill: queries. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, destructiveHint=false, openWorldHint=false). The description adds a genuinely new trait — 'Non-billable' — and characterizes query behavior (free text is 'ranked against name and description'), which the structured fields do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by a compact numbered list of query forms; every clause carries information and none is redundant. Appropriate length for a two-parameter tool with three distinct modes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with no output schema, the description covers invocation modes, the result kind ('get its definition'), the max_results caveat, and cost. Nothing an agent needs before calling is missing, and sibling list_skills is named for the discovery edge case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description goes slightly beyond the schema by giving a concrete free-text example ('cancel run') and stating the ranking basis, clarifying how the query parameter actually behaves rather than just restating the accepted forms.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Find a tool listed here... and get its definition', with the explicit motivation 'instead of guessing its name'. This distinguishes it cleanly from siblings like list_skills or get_live_flow, which retrieve different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the selection condition up front ('instead of guessing its name'), enumerates all three query modes, and routes the agent to list_skills for the skill names. Explicit when-to-use plus a named alternative, with nothing left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trigger_live_flowRun flowAInspect
Run a flow on demand — the same as the maker portal's "Run flow" button. Works with Request triggers (HTTP request, manual Button, PowerApps) and with scheduled RECURRENCE flows, which run immediately; a scheduled flow takes no inputs, so passing body to one is refused. Pass trigger inputs as body. Automated connector triggers only fire from their source event.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body to POST to the trigger URL. Omit for flows that expect an empty body. | |
| flowName | Yes | Name (ID) of the flow. | |
| connections | No | Only for a flow whose connections are provided by whoever runs it. Map of connection-reference name to the connection id to run it with, e.g. {"shared_office365users":"shared-office365user-…"}. Omit unless the result told you the connection picked was wrong; ids come from list_live_connections. | |
| environmentName | Yes | Name of the Power Platform environment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, idempotentHint=false, non-destructive). The description adds genuine behavioral context beyond them: scheduled recurrence flows execute immediately, take no inputs, and refuse a `body`, while automated connector triggers cannot be manually fired at all. It omits auth/permissions and expected success behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the primary purpose and the portal analogy, then the trigger-type constraints. Every clause carries constraint information, though the middle sentence is information-packed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description covers the invocation-critical concerns for a non-idempotent mutation: which trigger types accept it, what inputs are valid, and what is rejected. It could say more about what is returned (e.g., a run id) but is otherwise adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaning on top by clarifying that trigger inputs are passed as `body` and that `body` is refused for scheduled flows, tying the parameter to trigger-type behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (run/trigger a flow) and anchors it to the maker portal's "Run flow" button, making intent unambiguous. It clearly distinguishes the action from read/update siblings like get_live_flow and update_live_flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains precisely when the tool applies (Request triggers, manual Button, PowerApps) and when it cannot be used (automated connector triggers only fire from their source event), plus the scheduled-recurrence case. It stops short of naming sibling alternatives for the cases where it doesn't apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_live_flowCreate or update flowADestructiveIdempotentInspect
Update or create a flow. Use dryRun: true to preview any change without writing. Omit flowName to create: definition and displayName are required. Give flowName to update: displayName and/or definition and/or connectionReferences. SURGICAL EDIT: pass operations — an ordered list of set/add/remove/merge ops on array-of-keys paths — to change one action or parameter without resending the whole definition. Provide EITHER operations OR definition; connectionReferences may accompany either and lands in the same save. WHOLE definition: call get_live_flow, mutate properties.definition, pass it here. RENAME: pass displayName alone. Power Automate rejects a PATCH carrying no flow content, so this re-saves the unchanged definition — the maker portal does the same. definition.description is required, and must be brief — we append " #flowstudio-mcp" to it.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview only, on BOTH paths: with flowName, apply the change to the live definition and return the result + what changed; without flowName, return the flow that WOULD be created. Nothing is written either way. | |
| flowName | No | Name (ID) of the flow to update. Omit or leave blank to create a new flow. | |
| definition | No | Full flow definition as a JSON object (triggers + actions + parameters + outputs + description). MUST be a JSON object — strings are rejected. Do not JSON.stringify the definition; pass the parsed object directly. Required when creating. For updates, obtain from get_live_flow (properties.definition), modify it, then pass the modified object here. definition.description is required (a short note about what changed); when updating, if you omit it we reuse the flow's existing description. | |
| operations | No | SURGICAL EDIT of an existing flow (requires flowName; do not combine with definition). An ordered list applied to the LIVE definition. Each item = { op, path, value? }. path is an ARRAY of literal keys, e.g. ["actions","Send_Email","inputs","parameters","subject"] (each element is one key; a "/" inside an element is literal, so it addresses SharePoint/Dataverse columns like ["actions","Update_Item","inputs","parameters","item/Title"]). ops: set (create/overwrite), add (new key — errors if it already exists), remove (delete key — no-op if absent), merge (deep-merge an object value, keeping sibling keys). | |
| displayName | No | Display name for the flow. Required when creating. | |
| environmentName | Yes | Name of the Power Platform environment. | |
| connectionReferences | No | Connection references map copied from get_live_flow. Direct-flow entries use { connectionName, id }. Solution-aware entries also include { connectionReferenceLogicalName, source } and must retain those fields exactly. A freshly migrated entry may instead be keyed by the physical connection name and carry no connectionName field at all — copy it back as-is. The action/trigger inputs.host.connectionName must match the map key; the physical connectionName stays inside the entry. Never invent a solution logical name. Adding a connectionReferenceLogicalName to an entry that lacks one does not always take: the save can return success without storing it, so re-read with get_live_flow to confirm. MAY BE PASSED ALONGSIDE operations: your entries are merged over the stored map and saved in the SAME request as the edit. That is how you add the first action for a connector the flow does not use yet — a reference saved on its own does not stick, because Power Automate prunes an entry no action references. Your entries win on a key collision. | |
| expectedLastModifiedTime | No | With a whole definition: refuse if the flow changed since you read it. Pass get_live_flow's lastModifiedTime. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=true, and the description adds real context beyond them: dryRun writes nothing on either path, Power Automate rejects contentless PATCH so rename re-saves the unchanged definition, operations apply to the LIVE definition, and the ' #flowstudio-mcp' suffix is appended to description. These are non-obvious behavioral traits, not restatements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the create/update split and dense throughout, but several details (operations path syntax, op meanings, connectionReferences edge cases) duplicate the schema's own descriptions, making it longer than strictly necessary. Every sentence is still informative, so it stops short of 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, nested-object, no-output-schema mutation tool, the description covers all the branching modes (create, update, surgical, whole-definition, rename, dry-run) plus connectionReferences sticking caveats. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, but the description adds the exclusive/mutual relationships the schema cannot express: 'Provide EITHER operations OR definition', connectionReferences may accompany either and lands in the same save, and expectedLastModifiedTime is a concurrency guard. op semantics (set/add/remove/merge behaviors) are also spelled out.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Update or create a flow') and immediately disambiguates the two modes via flowName presence. An agent can distinguish it from the read-only get_live_flow and the separate update_store_flow siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use guidance: omit flowName to create (definition+displayName required), supply flowName to update, use dryRun to preview, use operations for surgical edits versus a whole definition, and pass displayName alone to rename. It also routes to get_live_flow as the source for a whole-definition update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_store_flowUpdate flow governance fieldsAIdempotentInspect
[Requires Pro+ plan] Update governance/metadata fields on a flow record in the Power Clarity store (description, business impact, owner team, tags, monitor flag, notification settings, etc.). Only fields provided are updated (merge semantics). Writes to the cache — does not call the Power Automate API.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| tier | No | ||
| monitor | No | Enable/disable monitoring for this flow. | |
| critical | No | ||
| flowName | Yes | Name (ID) of the flow. | |
| security | No | ||
| ownerTeam | No | ||
| description | No | ||
| supportEmail | No | ||
| supportGroup | No | ||
| businessValue | No | ||
| businessImpact | No | ||
| environmentName | Yes | Name of the Power Platform environment. | |
| ownerBusinessUnit | No | ||
| rule_notify_email | No | Comma-separated email addresses for notifications. | |
| rule_notify_onfail | No | Send notification when the flow fails. | |
| businessJustification | No | ||
| rule_notify_onmissingdays | No | Send notification when flow has not run for this many days (0 = disabled). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false and openWorld=false, so the safety profile is covered; the description adds genuine context beyond that with merge semantics ('only fields provided are updated') and the fact that writes land in the cache rather than the live Power Automate API. It does not explain how a field is cleared or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with the plan requirement and target resource front-loaded and the merge/cache behavior appended. No filler, though the bracketed plan notice interrupts the leading purpose statement slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 18-parameter mutation tool with no output schema and low schema coverage, the description covers the safety and merge semantics well but omits clearing/removal semantics, tag overwrite vs append behavior, and return value. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 18 parameters and only 33% schema description coverage, the schema leaves most fields undocumented (tier, security, critical, businessValue, businessJustification, supportEmail, supportGroup, ownerBusinessUnit). The description names a handful of updatable concepts and clarifies merge behavior, but does not explain what the undocumented fields mean or their expected value formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (update) plus the resource and the narrow field category (governance/metadata fields on a flow record in the Power Clarity store). The 'store' qualifier implicitly separates it from update_live_flow, but no sibling is named explicitly, so routing still requires inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two real usage constraints: a Pro+ plan prerequisite and the note that it writes to cache rather than calling the Power Automate API, which helps an agent decide between this and update_live_flow. However, it never states when to prefer this tool over that sibling or what happens if used outside Pro+.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- Added
create_live_connection - Changed
describe_live_connector1 field changed- changed
Input schema / properties / apiName / descriptionPrevious value: -"Alias for connectorName, matching Canvas MCP describe_api naming."New value: +"Alias for connectorName."
- Changed
resolve_live_parameters1 field changed- removed
Input schema / properties / dynamicMetadataRemoved value: -{ - "description": "Not needed for the operation's own inputs. For a list the connector does not describe, send its dropdown metadata; it runs through the designer's dropdown service.", - "type": "object" -}
- Added
test_live_connection
2 tool updates
- Changed
resolve_live_parameters1 field changed- changed
Input schema / properties / dynamicMetadata / descriptionPrevious value: -"Not needed for the operation's own inputs. For a list the connector does not describe (e.g. Dataverse ListRecords over connectionreferences), send its dropdown metadata; it runs through the designer's dropdown service."New value: +"Not needed for the operation's own inputs. For a list the connector does not describe, send its dropdown metadata; it runs through the designer's dropdown service."
- Changed
update_live_flow1 field changed- added
Input schema / properties / expectedLastModifiedTimeAdded value: +{ + "description": "With a whole definition: refuse if the flow changed since you read it. Pass get_live_flow's lastModifiedTime.", + "type": "string" +}
2 tool updates
- Changed
get_live_flow1 field changed- added
Input schema / properties / includeTriggerUrlAdded value: +{ + "description": "Also return the HTTP trigger URL. It is a credential: anyone holding it can run the flow.", + "type": "boolean" +}
- Changed
resolve_live_parameters1 field changed- changed
Input schema / properties / dynamicMetadata / descriptionPrevious value: -"Not needed for the operation's own inputs. For a lookup the connector does not define (e.g. Dataverse ListRecords over connectionreferences) send it and it is used as given."New value: +"Not needed for the operation's own inputs. For a list the connector does not describe (e.g. Dataverse ListRecords over connectionreferences), send its dropdown metadata; it runs through the designer's dropdown service."
5 tool updates
- Changed
describe_live_connector2 fields changed- added
Input schema / properties / depthAdded value: +{ + "description": "summary (default): compact operation catalog. full: raw OpenAPI metadata.", + "enum": [ + "summary", + "full" + ], + "type": "string" +} - removed
Input schema / properties / modeRemoved value: -{ - "description": "summary (default): compact operation catalog. full: raw OpenAPI metadata.", - "enum": [ - "summary", - "full" - ], - "type": "string" -}
- Changed
get_live_flow2 fields changed- added
Input schema / properties / actionsAdded value: +{ + "description": "Return only these actions, found at any nesting depth and each reported with the scopes it sits in, plus triggers. Combine with depth:\"summary\" to get the tree as well.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / depthAdded value: +{ + "description": "full (default): the whole definition. summary: the action tree — name, type, operation, runAfter, nesting — with no inputs. Use summary on a large flow, then ask for the actions you need.", + "enum": [ + "summary", + "full" + ], + "type": "string" +}
- Changed
get_live_flow_run_action_outputs1 field changed- changed
Input schema / properties / runName / descriptionPrevious value: -"Run identifier (name field from get_live_flow_runs). Required unless checkId is given."New value: +"Run identifier (name field from get_live_flow_runs), or \"latest\" for the most recent run. Required unless checkId is given."
- Changed
get_live_flow_run_error1 field changed- changed
Input schema / properties / runName / descriptionPrevious value: -"Run identifier (name field from get_live_flow_runs)."New value: +"Run identifier (name field from get_live_flow_runs), or \"latest\" for the most recent run."
- Changed
resubmit_live_flow_run1 field changed- changed
Input schema / properties / runName / descriptionPrevious value: -"Run identifier (name field from get_live_flow_runs)."New value: +"Run identifier (name field from get_live_flow_runs), or \"latest\" for the most recent run."
5 tool updates
- Changed
add_live_flow_to_solution1 field changed- changed
Input schema / properties / solutionId / descriptionPrevious value: -"Target solution ID (Dataverse solutionid GUID). Omit for the default solution. Discover IDs via get_live_dynamic_options on shared_commondataserviceforapps/ListRecords with entityName \"solutions\" (value-path solutionid, value-title friendlyname); needs a Dataverse connection in the env."New value: +"Target solution ID (Dataverse solutionid GUID). Omit for the default solution. Discover IDs via resolve_live_parameters on shared_commondataserviceforapps/ListRecords with entityName \"solutions\" (value-path solutionid, value-title friendlyname); needs a Dataverse connection in the env."
- Removed
get_live_dynamic_options - Removed
get_live_dynamic_properties - Added
resolve_live_parameters - Changed
trigger_live_flow1 field changed- added
Input schema / properties / connectionsAdded value: +{ + "description": "Only for a flow whose connections are provided by whoever runs it. Map of connection-reference name to the connection id to run it with, e.g. {\"shared_office365users\":\"shared-office365user-…\"}. Omit unless the result told you the connection picked was wrong; ids come from list_live_connections.", + "type": "object" +}
Related MCP Connectors
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Build and run agents and automations across hundreds of apps using natural language.
Shared debugging memory for AI coding agents
Create and manage AI agents that collaborate and solve problems through natural language interacti…
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables AI assistants to edit Power Automate cloud flows live, including reading/writing flow definitions, managing connectors, and syncing changes, with no admin rights or app registration required.181MIT
- AlicenseBqualityAmaintenanceEnables coding agents to build, test, ship, and manage Microsoft Copilot Studio agents from the editor, with YAML-based authoring, sync via Power Platform CLI, and API coverage for evaluations, chat, and flows.14273 npmMIT
- AlicenseBqualityFmaintenanceLocal-first MCP server and Chromium extension for AI-assisted Microsoft Power Automate work, enabling users to inspect, validate, edit, run, review, and revert cloud flows using a browser session.2452 npm27MIT
- AlicenseNot gradedqualityDmaintenanceBringing the debugging we know and love as human programmers to our AI agents – debug any supported language with breakpoints, variable/state inspection, and stepping, to supercharge agents' capabilities to reason about runtime code.37 PyPI21Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.