Skip to main content
Glama
michsob

PowerPlatform MCP

by michsob

PowerPlatform MCP / CLI

A Model Context Protocol (MCP) server and standalone CLI for querying and configuring PowerPlatform / Dataverse environments. Supports multiple environments, entity metadata, records, plugins, flows, solutions, workflows, business rules, security roles, custom APIs, web resources, and more — including write operations for automated environment setup.

Why MCP + CLI?

MCP integrates directly with AI clients (Claude, Cursor, GitHub Copilot) for interactive, conversational exploration of your environments.

CLI writes results to a file system cache instead of returning them inline. MCP tool responses are bound by the AI client's context window, which can truncate or degrade results when querying environments with hundreds of entities, flows, or plugin steps. The CLI avoids this limitation by persisting full results to disk, making them available for follow-up analysis without context pressure. Both interfaces share the same tools and capabilities.

Related MCP server: MCP Dataverse

Installation

Requires Node.js 22+ (< 25).

MCP Server

npm install -g powerplatform-mcp
# or
npx powerplatform-mcp

CLI

npm install -g powerplatform-cli
# or
npx powerplatform-cli

Docker

# MCP Server
docker pull ghcr.io/michsob/powerplatform-mcp
docker run --env-file .env ghcr.io/michsob/powerplatform-mcp

# CLI
docker pull ghcr.io/michsob/powerplatform-cli
docker run --env-file .env ghcr.io/michsob/powerplatform-cli entity-attributes account

Configuration

The tool supports multiple environments. Define them via environment variables:

POWERPLATFORM_ENVIRONMENTS=DEV,UAT,PROD

# For each environment, set:
POWERPLATFORM_DEV_URL=https://dev-org.crm.dynamics.com
POWERPLATFORM_DEV_CLIENT_ID=your-client-id
POWERPLATFORM_DEV_CLIENT_SECRET=your-client-secret
POWERPLATFORM_DEV_TENANT_ID=your-tenant-id

POWERPLATFORM_UAT_URL=https://uat-org.crm.dynamics.com
POWERPLATFORM_UAT_CLIENT_ID=...
POWERPLATFORM_UAT_CLIENT_SECRET=...
POWERPLATFORM_UAT_TENANT_ID=...

For local development, copy .env.example to .env and fill in your credentials.

MCP Server

The MCP server is designed for AI-powered clients (Claude, Cursor, GitHub Copilot).

Available MCP Tools (67)

All tools accept an optional environment parameter to target a specific environment (defaults to the first configured).

Entity

Tool

Description

Required Params

Optional

get-entity-metadata

Get entity metadata

entityName

get-entity-attributes

List all attributes/fields

entityName

get-entity-attribute

Get a specific attribute

entityName, attributeName

get-entity-relationships

Get 1:N and N:N relationships

entityName

create-entity-string-attribute

Create a Single Line of Text column

entityName, schemaName, displayName

maxLength, requiredLevel, description, solutionName

get-entity-keys

List alternate keys on an entity

entityName

create-entity-alternate-key

Create an alternate key

entityName, schemaName, displayName, keyAttributes

solutionName

Records

Tool

Description

Required Params

Optional

get-record

Get a record by ID

entityNamePlural, recordId

query-records

OData query

entityNamePlural, filter

maxRecords (default 50)

Plugins

Tool

Description

Required Params

Optional

get-plugin-assemblies

List plugin assemblies

includeManaged, maxRecords

get-plugin-assembly-complete

Assembly with types, steps, images

assemblyName

includeDisabled

get-entity-plugin-pipeline

Plugins executing on an entity

entityName

messageFilter, includeDisabled

get-plugin-trace-logs

Plugin trace logs

entityName, messageName, correlationId, pluginStepId, exceptionOnly, hoursBack, maxRecords

get-all-plugin-steps

All SDK message processing steps

includeDisabled, maxRecords

get-plugin-type

Look up a plugin type by class name

typeName

get-sdk-message

Look up an SDK message by name

messageName

create-plugin-step

Register a plugin step

name, pluginTypeId, sdkMessageId, stage, mode

rank, supportedDeployment, description, configuration, sdkMessageFilterId, solutionName

Flows (Power Automate)

Tool

Description

Required Params

Optional

get-flows

List cloud flows (smart filtering)

activeOnly, maxRecords, nameContains, excludeSystem, excludeCustomerInsights, excludeCopilotSales

search-workflows

Search workflows and flows

name, primaryEntity, description, category, statecode, includeDescription, maxResults

get-flow-definition

Full definition or parsed summary

flowId

summary

get-flow-runs

Flow run history

flowId

status, startedAfter, startedBefore, maxRecords

get-flow-run-details

Run details with action-level errors

flowId, runId

cancel-flow-run

Cancel a running/waiting run

flowId, runId

resubmit-flow-run

Retry a failed run

flowId, runId

scan-flow-health

Batch health scan (success rates)

daysBack, maxRunsPerFlow, maxFlows, activeOnly

get-flow-inventory

Lightweight flow inventory

maxRecords

Solutions

Tool

Description

Required Params

Optional

get-publishers

List non-readonly publishers

get-solutions

List visible solutions

get-solution

Get solution by unique name

uniqueName

get-solution-components

List components in a solution

solutionUniqueName

export-solution

Export solution (base64)

solutionName

managed

add-solution-component

Add a component to a solution

solutionUniqueName, componentId, componentType

addRequiredComponents

publish-customizations

Publish entity or all customizations

entityLogicalName

Workflows (Classic)

Tool

Description

Required Params

Optional

get-workflows

List classic workflows

activeOnly, maxRecords

get-workflow-definition

XAML definition or summary

workflowId

summary

get-ootb-workflows

Background, BPFs, actions, on-demand

maxRecords, categories

Business Rules

Tool

Description

Required Params

Optional

get-business-rules

List business rules

activeOnly, maxRecords

get-business-rule

Business rule with XAML

workflowId

Option Sets

Tool

Description

Required Params

get-global-option-set

Get a global option set definition

optionSetName

Configuration

Tool

Description

Required Params

Optional

get-connection-references

Connection references

maxRecords, managedOnly, hasConnection, inactive

get-environment-variables

Environment variable definitions + values

maxRecords, managedOnly

create-environment-variable

Create an environment variable definition

schemaName, displayName, type

defaultValue, description, solutionName

set-environment-variable-value

Set or update an environment variable value

definitionId, value

existingValueId

Custom APIs

Tool

Description

Required Params

Optional

get-custom-apis

List Custom API definitions

maxRecords, includeManaged

get-custom-api

Get a Custom API by unique name

uniqueName

create-custom-api

Create a Custom API definition

uniqueName, name, displayName, bindingType, isFunction, isPrivate, allowedCustomProcessingStepType

description, pluginTypeId, pluginTypeName, boundEntityLogicalName, solutionName

get-custom-api-response-properties

List response properties

customApiId

create-custom-api-response-property

Create a response property

customApiId, uniqueName, name, displayName, type

description, logicalEntityName, isOptional, solutionName

get-custom-api-request-parameters

List request parameters

customApiId

create-custom-api-request-parameter

Create a request parameter

customApiId, uniqueName, name, displayName, type

description, logicalEntityName, isOptional, solutionName

Web Resources

Tool

Description

Required Params

Optional

get-web-resources

List web resources

maxRecords, webResourceType, nameFilter

get-web-resource

Get a web resource by name

name

create-web-resource

Upload a new web resource

name, displayName, webResourceType, content

description, solutionName

Security Roles

Tool

Description

Required Params

Optional

get-security-roles

List customizable security roles

solutionUniqueName, excludeSystemRoles, includePrivileges, maxRecords

get-security-role-privileges

Privileges for a role (name, accessright, depth mask)

roleId

entityFilter, accessRightFilter

list-privileges

Browse the system privilege catalog to discover privilegeId GUIDs and supported depths

entityFilter, accessRightFilter, maxRecords

create-security-role

Create a new role (defaults to root BU); optional solutionUniqueName adds it to a solution in one step

name

businessUnitId, description, solutionUniqueName

clone-security-role

Clone a role with its privileges. Uses CloneAsRole with a create-then-copy fallback when the action isn't available

sourceRoleId

newName, targetBusinessUnitId, solutionUniqueName

update-security-role

Update a role's name, description, or business unit

roleId

name, description, businessUnitId, solutionUniqueName

delete-security-role

Delete a role (destructive — requires confirm: true)

roleId, confirm

add-security-role-privileges

Append privileges to a role (AddPrivilegesRole — leaves existing privileges intact)

roleId, privileges[]

remove-security-role-privileges

Remove privileges from a role (loops RemovePrivilegeRole)

roleId, privilegeIds[]

replace-security-role-privileges

Wipe and replace the full privilege set (ReplacePrivilegesRole — destructive, requires confirm: true)

roleId, privileges[], confirm

Each item in privileges[] is { privilegeId, depth, businessUnitId? }. Depth is one of Basic (user), Local (BU), Deep (BU + child), Global (org).

Dependencies

Tool

Description

Required Params

check-component-dependencies

Dependencies blocking deletion

componentId, componentType

check-delete-eligibility

Check if a component can be deleted

componentId, componentType

Service Endpoints

Tool

Description

Optional

get-service-endpoints

Service Bus, webhooks, Event Hub, Event Grid

maxRecords

MCP Prompts

Prompt

Description

Required Args

entity-overview

Entity overview with key attributes and relationships

entityName

attribute-details

Detailed attribute info (type, format, requirements)

entityName, attributeName

query-template

OData query template with example filters

entityName

relationship-map

Complete 1:N and N:N relationship map

entityName


CLI

Same tools as the MCP server, but results are cached to the file system for full-fidelity output on large data sets.

Global Option

--env <name> — target environment (defaults to first configured).

Commands

Entity

entity-metadata <entityName>
entity-attributes <entityName>
entity-attribute <entityName> <attributeName>
entity-relationships <entityName>
entity-keys <entityName>
create-entity <schemaName> <displayName> <displayCollectionName>  [--primary-name-schema <name>] [--primary-name-display <name>] [--description <desc>] [--ownership <UserOwned|OrganizationOwned>] [--has-activities] [--has-notes] [--solution <name>]
create-entity-string-attribute <entityName> <schemaName> <displayName>  [--max-length <n>] [--required-level <level>] [--description <desc>] [--solution <name>]
create-entity-memo-attribute <entityName> <schemaName> <displayName>  [--max-length <n>] [--required-level <level>] [--description <desc>] [--solution <name>]
create-entity-integer-attribute <entityName> <schemaName> <displayName>  [--min <n>] [--max <n>] [--required-level <level>] [--description <desc>] [--solution <name>]
create-entity-decimal-attribute <entityName> <schemaName> <displayName>  [--precision <n>] [--min <n>] [--max <n>] [--required-level <level>] [--description <desc>] [--solution <name>]
create-entity-money-attribute <entityName> <schemaName> <displayName>  [--precision-source <0|1|2>] [--precision <n>] [--min <n>] [--max <n>] [--required-level <level>] [--description <desc>] [--solution <name>]
create-entity-boolean-attribute <entityName> <schemaName> <displayName>  [--true-label <label>] [--false-label <label>] [--default-value <true|false>] [--required-level <level>] [--description <desc>] [--solution <name>]
create-entity-datetime-attribute <entityName> <schemaName> <displayName>  [--format <DateOnly|DateAndTime>] [--behavior <UserLocal|DateOnly|TimeZoneIndependent>] [--required-level <level>] [--description <desc>] [--solution <name>]
create-entity-picklist-attribute <entityName> <schemaName> <displayName>  [-o <value:label>]... [--required-level <level>] [--description <desc>] [--solution <name>]
create-entity-lookup <referencingEntity> <referencedEntity> <relationshipSchemaName> <lookupSchemaName> <displayName>  [--required-level <level>] [--description <desc>] [--cascade-delete <NoCascade|RemoveLink|Restrict|Cascade>] [--solution <name>]
create-entity-alternate-key <entityName> <schemaName> <displayName> <keyAttributes...>  [--solution <name>]
delete-entity-attribute <entityName> <attributeName>

Records

record <entityNamePlural> <recordId>
query-records <entityNamePlural> <filter>  [--max <n>]
create-record <entityNamePlural> <jsonBody>
update-record <entityNamePlural> <recordId> <jsonBody>
delete-record <entityNamePlural> <recordId>
associate-records <entityNamePlural> <recordId> <navigationProperty> <relatedEntityNamePlural> <relatedRecordId>
disassociate-records <entityNamePlural> <recordId> <navigationProperty> [relatedRecordId]

Plugins

plugin-assemblies                          [--include-managed] [--max <n>]
plugin-assembly <assemblyName>             [--include-disabled]
plugin-packages                            [--include-managed] [--max <n>]
plugin-type <typeName>
entity-pipeline <entityName>               [--message <msg>] [--include-disabled]
plugin-trace-logs                          [--entity <name>] [--message <msg>] [--correlation-id <id>] [--step-id <id>] [--hours <n>] [--max <n>] [--exceptions-only]
all-plugin-steps                           [--include-disabled] [--max <n>]
sdk-message <messageName>
register-plugin-package <filePath>         [--pkg-version <version>] [--solution <name>]
update-plugin-package <filePath>           --plugin-package-id <id> [--pkg-version <version>]
create-plugin-step <name> <pluginTypeId> <sdkMessageId>  [--stage <n>] [--mode <n>] [--rank <n>] [--supported-deployment <n>] [--description <desc>] [--configuration <cfg>] [--message-filter-id <id>] [--solution <name>]
create-plugin-step-image <stepId>          [--name <name>] [--entity-alias <alias>] [--image-type <0|1|2>] [--message-property-name <name>] [--attributes <csv>]

Flows

flows                                      [--active] [--name <contains>] [--include-managed] [--max <n>]
flow-definition <flowId>                   [--summary]
flow-inventory                             [--max <n>]
flow-runs <flowId>                         [--status <s>] [--after <iso>] [--before <iso>] [--max <n>]
flow-run-details <flowId> <runId>
flow-health                                [--days <n>] [--max-runs <n>] [--max-flows <n>] [--active]
search-workflows                           [--name <name>] [--entity <entity>] [--category <n>] [--active] [--max <n>]
create-cloud-flow <clientDataFile>         [--primary-entity <entity>] [--solution <name>]
activate-flow <flowId>
deactivate-flow <flowId>

Solutions

solutions
solution <uniqueName>
solution-components <uniqueName>
publishers
add-solution-component <solutionUniqueName> <componentId> <componentType>  [--add-required]
publish-customizations                     [--entity <logicalName>]

Workflows

workflows                                  [--active] [--max <n>]
workflow-definition <workflowId>           [--summary]
ootb-workflows                             [--categories <0,1,2,3,4>]

Business Rules

business-rules                             [--active] [--max <n>]
business-rule <workflowId>

Option Sets

optionset <optionSetName>

Dependencies

check-dependencies <componentId> <componentType>

Configuration

connection-references                      [--managed-only] [--has-connection] [--no-connection] [--inactive] [--max-records <n>]
create-connection-reference <logicalName> <displayName> <connectorId>  [--description <desc>] [--solution <name>]
environment-variables                      [--managed-only] [--max-records <n>]
create-environment-variable <schemaName> <displayName>  [--type <type>] [--default-value <val>] [--description <desc>] [--solution <name>]
set-environment-variable-value <definitionId> <value>   [--existing-value-id <id>]

Custom APIs

custom-apis                                [--include-managed] [--max <n>]
custom-api <uniqueName>
create-custom-api <uniqueName> <displayName>  [--binding-type <n>] [--bound-entity <name>] [--is-function] [--is-private] [--processing-type <n>] [--plugin-type-id <id>] [--plugin-type-name <name>] [--description <desc>] [--solution <name>]
custom-api-response-properties <customApiId>
create-custom-api-response-property <customApiId> <uniqueName> <displayName>  [--type <n>] [--description <desc>] [--solution <name>]
custom-api-request-parameters <customApiId>
create-custom-api-request-parameter <customApiId> <uniqueName> <displayName>  [--type <n>] [--description <desc>] [--optional] [--solution <name>]

Web Resources

web-resources                              [--type <n>] [--name <contains>] [--max <n>]
web-resource <name>
create-web-resource <name> <displayName> <filePath>  [--type <n>] [--description <desc>] [--solution <name>]
set-entity-icon <entityName> <svgFilePath>  [--solution <name>] [--web-resource-name <name>] [--display-name <name>] [--no-publish]

Forms & Views

entity-forms <entityName>                  [--type <n>]
entity-form-fields <formId>
add-form-field <entityName> <formId> <attributeName>
remove-form-field <entityName> <formId> <attributeName>
entity-views <entityName>
add-view-column <entityName> <viewId> <attributeName>   [--width <n>]
set-view-columns <entityName> <viewId> <columns...>     [--order-by <attr>] [--desc]
remove-view-column <entityName> <viewId> <attributeName>

PAC Integration

pac-auth                                   Authenticate pac CLI using environment credentials
generate-models <outdirectory>             [--settings <path>] [--entities <filter>] [--namespace <ns>]
deploy-plugin <pluginFile>                 --plugin-id <id> [--type <Nuget|Assembly>] [--configuration <config>]

Security Roles

security-roles                             [--solution <name>] [--include-system] [--include-privileges] [--max-records <n>]
security-role-privileges <roleId>          [--entity <name>] [--access-right <type>]
privileges                                 [--entity <name>] [--access-right <type>] [--max-records <n>]
create-security-role                       --name <name> [--bu <id>] [--description <desc>] [--solution <name>]
clone-security-role <sourceRoleId>         [--name <name>] [--target-bu <id>] [--solution <name>]
update-security-role <roleId>              [--name <name>] [--description <desc>] [--bu <id>] [--solution <name>]
delete-security-role <roleId>              --yes
add-role-privileges <roleId>               --privileges <spec>     # JSON array or shorthand <guid>:<Basic|Local|Deep|Global>,...
remove-role-privileges <roleId>            --privileges <id,id,id>
replace-role-privileges <roleId>           --privileges <spec> --yes

Service Endpoints

service-endpoints                          [--max <n>]

Development

git clone https://github.com/michsob/powerplatform-mcp.git
cd powerplatform-mcp
npm install
cp .env.example .env   # fill in credentials
npm run build
npm run inspector      # test with MCP Inspector

Releasing

To publish a new version:

  1. Update version in package.json

  2. Commit the change to main

  3. Create and push a version tag:

    git tag v1.0.2
    git push origin v1.0.2

GitHub Actions will automatically publish:

Package

npm

GitHub Packages

Docker (GHCR)

MCP Server

npm i powerplatform-mcp

npm i @michsob/powerplatform-mcp

ghcr.io/michsob/powerplatform-mcp

CLI

npm i powerplatform-cli

npm i @michsob/powerplatform-cli

ghcr.io/michsob/powerplatform-cli

npm publishing uses Trusted Publishing (OIDC) — no tokens or secrets needed. GitHub Packages and GHCR use the built-in GITHUB_TOKEN automatically.

License

MIT

Available Tools

38 tools
cancel-flow-runCancel Flow RunA

Cancel a running or waiting flow run. Cannot cancel flows already in a terminal state (Succeeded, Failed, Cancelled).

ParametersJSON Schema
NameRequiredDescriptionDefault
flowIdYesThe workflow ID (GUID)
runIdYesThe flow run ID
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
successYes
flowIdYes
runIdYes
previousStatusYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the important state constraint (terminal states cannot be cancelled), but omits other behavioral traits like idempotency, permission requirements, side effects, or what state the run transitions to upon cancellation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste: first establishes the action and valid targets, second establishes the exclusion constraint. Information is front-loaded and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description appropriately focuses on the invocation constraint (terminal states). It covers the essential business logic needed to use the tool correctly, though with no annotations, a brief note on the resulting state transition would strengthen completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage (flowId, runId, environment all documented). Per rubric guidelines, this establishes a baseline of 3. The description text adds no additional parameter semantics beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action (Cancel), target resource (flow run), and valid states (running or waiting). It effectively distinguishes this tool from the numerous sibling 'get' tools and from 'resubmit-flow-run' through the specific verb and state constraints.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit negative constraints ('Cannot cancel flows already in a terminal state'), which helps the agent avoid incorrect invocations. However, it lacks explicit positive guidance on when to prefer this over 'resubmit-flow-run' or prerequisites for use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check-component-dependenciesCheck Component DependenciesA

Check dependencies for a PowerPlatform component before deletion. Returns all components that depend on the specified component.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentIdYesThe GUID of the component to check
componentTypeYesThe component type number (e.g., 1=Entity, 9=OptionSet, 29=Workflow, 80=PluginAssembly, 90=PluginType, 92=SdkMessageProcessingStep)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
componentIdYes
componentTypeYes
dependenciesYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation through 'Returns all components,' but does not explicitly guarantee safety (no deletion occurs), mention required permissions, or note side effects. It meets minimum viable disclosure but lacks rich behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two efficient sentences with zero waste. It is front-loaded with the action and context ('Check dependencies... before deletion') followed by the return value description. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 100% schema coverage, existence of an output schema, and the tool's focused scope (3 parameters), the description is reasonably complete. It covers the primary use case and return value. It could be improved by explicitly stating the read-only nature given the lack of annotations, but it adequately supports tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, establishing a baseline of 3. The description adds minimal semantic value beyond the schema, though the 'before deletion' context colors how an agent should interpret the componentId/componentType parameters. It does not add syntax details or validation rules absent from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks dependencies for a PowerPlatform component and specifies the unique context 'before deletion.' It identifies the resource (dependencies) and action (check/return), though it could more explicitly distinguish from the sibling tool 'check-delete-eligibility.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'before deletion' provides implied usage context, suggesting when to invoke this tool (pre-deletion safety check). However, it lacks explicit guidance on when NOT to use it or how it differs from 'check-delete-eligibility' or other metadata tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check-delete-eligibilityCheck Delete EligibilityA

Check if a PowerPlatform component can be safely deleted. Returns whether deletion is allowed and lists blocking dependencies.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentIdYesThe GUID of the component to check
componentTypeYesThe component type number (e.g., 1=Entity, 9=OptionSet, 29=Workflow, 80=PluginAssembly, 90=PluginType, 92=SdkMessageProcessingStep)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
componentIdYes
componentTypeYes
canDeleteYes
dependenciesYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It effectively discloses return semantics: 'whether deletion is allowed' and specifically 'lists blocking dependencies,' explaining what 'eligibility' means. Missing explicit read-only/side-effect disclosure, though 'Check' implies safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly constructed sentences with zero waste. First sentence establishes purpose, second discloses return value. Front-loaded with key action and appropriately brief given rich schema and output schema availability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Sufficient for a 3-parameter inspection tool with 100% schema coverage and existing output schema. Description provides high-level return value summary without duplicating output schema details. Could mention environment default behavior, but omission acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% description coverage with detailed componentType examples. Description adds no parameter-specific guidance beyond schema, which is acceptable given comprehensive schema documentation. Baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Check' with clear resource 'PowerPlatform component' and distinct context 'safely deleted.' It differentiates from sibling check-component-dependencies by focusing specifically on deletion safety and blocking dependencies rather than general dependency listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides implied usage context (use when considering deletion), but lacks explicit guidance on when to use this versus check-component-dependencies or other inspection tools. No 'when not to use' or prerequisite guidance provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export-solutionExport SolutionA

Export a solution as a base64-encoded package. This is a read-only operation that serializes the solution.

ParametersJSON Schema
NameRequiredDescriptionDefault
solutionNameYesThe unique name of the solution to export
managedNoExport as managed solution (default: false)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
solutionNameYes
exportResultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full disclosure burden. It successfully conveys two critical behavioral traits: the read-only/safe nature of the operation and the base64 encoding of the output. It appropriately does not describe return values since an output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The first sentence front-loads the core action and output format. The second sentence efficiently communicates the safety profile (read-only) and mechanism (serializes). Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter export operation with an output schema, the description is appropriately complete. It discloses the critical encoding format (base64) that agents need to handle the response. Minor gap: could specify the package format type (e.g., ZIP) if applicable, but this is not essential.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline score applies. The description does not explicitly discuss parameters, but the schema fully documents all three fields (solutionName, managed, environment). No additional semantic context (e.g., valid environment values) is added by the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action (export), resource (solution), and distinguishing output format (base64-encoded package). This effectively differentiates it from sibling 'get-solution' which likely returns metadata rather than a serialized package.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the 'read-only operation' statement provides safety context, the description lacks explicit guidance on when to choose this over 'get-solution' or other retrieval tools. The base64 format implies file-export use cases, but no explicit when-to-use/when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-all-plugin-stepsGet All Plugin StepsC

Get all plugin SDK message processing steps across all assemblies in the environment

ParametersJSON Schema
NameRequiredDescriptionDefault
includeDisabledNoInclude disabled steps (default: true)
maxRecordsNoMaximum records (default: 500)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure but fails to state whether this is read-only (implied by 'Get' but not confirmed), what the return format is, whether results include system vs custom steps, or performance characteristics. The scope 'across all assemblies' hints at potential volume but lacks explicit warnings about large result sets.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single 12-word sentence that is front-loaded with the action verb. While efficient, it is arguably underspecified given the absence of annotations and output schema—additional sentences covering behavioral traits or return values would earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of both annotations and output schema, the description is insufficient for a tool retrieving technical configuration objects (plugin steps). It fails to explain return structure, pagination behavior, or environment selection implications, leaving significant gaps an agent would need to infer through trial and error.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the input parameters (includeDisabled, maxRecords, environment) are fully documented in the schema itself. The description adds no parameter-specific context, which aligns with the baseline score of 3 when schema coverage is comprehensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Get) and resource (plugin SDK message processing steps) with specific scope (across all assemblies). It implicitly distinguishes from sibling tools like get-entity-plugin-pipeline (entity-scoped) and get-plugin-assemblies (returns assemblies, not steps) by emphasizing 'all assemblies,' though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus siblings such as get-entity-plugin-pipeline (for entity-specific steps) or get-plugin-assembly-complete (for assembly details). It omits prerequisites, warnings about performance in large environments, or filtering recommendations despite retrieving ALL steps across ALL assemblies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-business-ruleGet Business RuleB

Get a specific business rule with its complete XAML definition

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowIdYesThe workflow ID (GUID) of the business rule
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
workflowidYes
nameYes
descriptionYes
stateYes
statecodeYes
statuscodeYes
typeYes
categoryYes
primaryEntityYes
isManagedYes
ownerYes
createdOnYes
createdByYes
modifiedOnYes
modifiedByYes
xamlYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions the return includes 'complete XAML definition,' it fails to indicate whether this is a read-only operation, if there are rate limits, error conditions, or caching behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of a single, efficient sentence of nine words that front-loads the action verb. Every word serves a purpose, identifying the operation, target resource, and return format without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complete input schema and existence of an output schema, the description adequately covers the core function by mentioning the XAML return format. However, with no annotations provided, the description lacks contextual details about error handling, authentication requirements, or behavioral constraints that would make it fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for both parameters (workflowId and environment), establishing a baseline score. The description adds no additional semantic information about parameter formats, valid environment values, or the relationship between the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Get' and identifies the resource as a 'business rule.' It distinguishes scope by specifying 'specific' (singular) versus the plural sibling 'get-business-rules,' and clarifies the return format includes the 'complete XAML definition,' which differentiates it from general workflow retrieval tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus siblings like 'get-business-rules' or 'get-workflow-definition.' It does not indicate prerequisites such as requiring the workflowId format or permissions needed to access business rules.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-business-rulesGet Business RulesC

Get all business rules in the environment

ParametersJSON Schema
NameRequiredDescriptionDefault
activeOnlyNoOnly return activated business rules (default: false)
maxRecordsNoMaximum number of records to retrieve (default: 100)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalCountYes
businessRulesYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It fails to disclose whether this is a read-only operation, pagination behavior (beyond the maxRecords parameter), or what constitutes 'business rules' in this specific platform context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is front-loaded with the action and contains no filler. However, extreme brevity comes at the cost of guidance and context, preventing a score of 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With output schema present and full parameter schema coverage, the description meets minimum needs for a list operation. However, it lacks usage context (when to prefer this over query-records or the singular version) and behavioral expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for activeOnly, maxRecords, and environment. The description adds no parameter-specific guidance, but with such high schema coverage, the baseline applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (Get), resource (business rules), and scope (all, in the environment). It implicitly distinguishes from sibling 'get-business-rule' (singular) by specifying 'all', though it doesn't explicitly mention when to use each.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance provided on when to use this tool versus alternatives like 'get-business-rule' (singular) or 'query-records'. No mention of prerequisites, rate limits, or performance considerations when retrieving large rule sets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-connection-referencesGet Connection ReferencesB

Get connection references in the PowerPlatform environment with optional filtering by managed status, connection presence, and active state

ParametersJSON Schema
NameRequiredDescriptionDefault
maxRecordsNoMaximum number of records to return (default: 100)
managedOnlyNoOnly return managed connection references (default: false)
hasConnectionNoFilter to connection references that have (true) or lack (false) a connection set
inactiveNoFilter to inactive connection references (statecode ne 0)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
connectionReferencesYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry full behavioral disclosure burden. It fails to indicate whether this is a read-only operation, if there are rate limits, or how pagination behaves with maxRecords. The description only covers filtering capabilities without addressing safety or operational characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficiently constructed sentence that front-loads the core action and resource. Every word serves a purpose, and the optional filtering clause appropriately trails without cluttering the primary purpose statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and complete parameter documentation, the description provides adequate context for invocation. However, given the lack of annotations and the specialized nature of PowerPlatform connection references, the description is minimal—it does not explain what connection references represent or their relationship to flows/solutions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description adds conceptual grouping for three filter parameters (managedOnly, hasConnection, inactive) by mapping them to 'managed status,' 'connection presence,' and 'active state,' but completely omits mention of maxRecords and environment parameters, leaving the schema to handle those alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('connection references') within the PowerPlatform environment. It specifies the target domain effectively, though it could more explicitly distinguish from sibling 'get-' tools like get-flows or get-solutions by clarifying what connection references specifically are.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions available filters ('optional filtering by managed status, connection presence, and active state') but provides no explicit guidance on when to use this tool versus alternatives like query-records, or when filtering is necessary versus retrieving all records.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-entity-attributeGet Entity AttributeC

Get a specific attribute/field of a PowerPlatform entity

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNameYesThe logical name of the entity
attributeNameYesThe logical name of the attribute
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
entityNameYes
attributeNameYes
attributeYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It fails to disclose that this retrieves schema/metadata about an attribute (not actual field values from records), does not describe the return format despite the existence of an output schema, and omits any mention of permissions or error states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the action. However, given the lack of annotations and ambiguity around the tool's behavior, the extreme brevity leaves critical gaps rather than earning efficiency points.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema to handle return value documentation, the description is incomplete for agent selection. It lacks critical context to distinguish this metadata retrieval tool from data retrieval siblings (get-record, query-records) and does not explain the PowerPlatform 'attribute' concept for users unfamiliar with the platform.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for entityName, attributeName, and environment. The description adds no additional semantic information beyond the schema, which is acceptable given the high coverage baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (Get) and resource (specific attribute/field of a PowerPlatform entity). It implicitly distinguishes from sibling 'get-entity-attributes' (plural) by emphasizing 'specific,' though it does not explicitly name the sibling tool or clarify whether this retrieves schema metadata vs. record data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance provided on when to use this tool versus alternatives like 'get-entity-attributes', 'get-entity-metadata', or 'get-record'. No prerequisites or conditions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-entity-attributesGet Entity AttributesC

Get attributes/fields of a PowerPlatform entity

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNameYesThe logical name of the entity
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
entityNameYes
attributesYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It does not disclose whether this is a read-only operation (though implied by 'Get'), performance characteristics, caching behavior, or what specific PowerPlatform API concepts (like logical vs physical names) apply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise at six words with no redundant text. However, it may be overly terse given the lack of annotations and presence of similar sibling tools; additional context would improve utility without sacrificing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read operation with an output schema provided, the description covers the minimum. However, given the lack of annotations and the confusing similarity to 'get-entity-attribute', the description is incomplete regarding disambiguation and behavioral expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with 'entityName' and 'environment' both well-described in the schema. The description adds minimal semantic value beyond the schema, only confirming the PowerPlatform domain context. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('attributes/fields of a PowerPlatform entity'). However, it fails to distinguish from the similar sibling tool 'get-entity-attribute' (singular), which could confuse the agent about whether this retrieves all attributes or requires a specific attribute identifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no guidance on when to use this tool versus siblings like 'get-entity-attribute', 'get-entity-metadata', or 'get-entity-relationships'. No prerequisites, conditions, or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-entity-metadataGet Entity MetadataC

Get metadata about a PowerPlatform entity

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNameYesThe logical name of the entity
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
entityNameYes
metadataYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Get' implies read-only, there's no mention of caching behavior, performance characteristics (metadata calls can be expensive), required privileges (system admin vs user), or what specific metadata properties are returned in the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely brief (6 words), which avoids verbosity, but borders on tautology with the title 'Get Entity Metadata'. While front-loaded, it lacks the substance to be genuinely helpful. A second sentence distinguishing this from sibling tools would improve value without sacrificing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown but indicated) and 100% input schema coverage, the minimal description is technically sufficient for basic invocation. However, given the dense sibling landscape of 30+ similar tools, the description fails to provide necessary context for correct tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%—both 'entityName' and 'environment' are fully described in the schema with types and descriptions. The description adds no additional semantics about valid entity name formats, case sensitivity, or environment resolution logic beyond what the schema already provides. Baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the basic action ('Get metadata') and resource ('PowerPlatform entity'), but fails to distinguish from siblings like 'get-entity-attributes' or 'get-entity-relationships'. In the PowerPlatform/Dataverse context, 'metadata' has a specific technical meaning (entity schema definition) that isn't clarified here, leaving ambiguity about whether this returns schema details, attribute lists, or relationship maps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance provided on when to use this versus 'get-entity-attributes' (which gets field definitions) or 'get-record' (which gets data). No prerequisites mentioned (e.g., whether the entity must exist, or if this works for both custom and system entities).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-entity-plugin-pipelineGet Entity Plugin PipelineA

Get all plugins that execute on a specific entity, organized by message and stage

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNameYesThe logical name of the entity
messageFilterNoFilter by specific message (e.g., 'Create', 'Update', 'Delete')
includeDisabledNoInclude disabled steps (default: false)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
entityYes
messagesYes
stepsYes
executionOrderYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds valuable context about result organization ('organized by message and stage') but omits explicit safety declarations (read-only nature), error handling behavior, or performance characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of a single, information-dense sentence with zero wasted words. It is front-loaded with the action ('Get all plugins'), immediately qualified by the scope constraint ('on a specific entity'), and concludes with the organizational structure ('organized by message and stage').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (covering return values) and 100% schema parameter coverage, the description provides sufficient context for invocation. The only gap is the absence of annotations, which a complete description might have compensated for with explicit safety or behavioral notes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, establishing a baseline of 3. The description mentions 'message and stage' which conceptually relates to the messageFilter parameter and output structure, but does not add substantive semantic meaning, valid value ranges, or usage examples beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description provides a specific verb ('Get'), resource ('plugins'), and scope ('that execute on a specific entity'). It effectively distinguishes from siblings like 'get-all-plugin-steps' by emphasizing entity-specificity and the unique organization method ('organized by message and stage').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through the phrase 'on a specific entity,' suggesting when to use this versus general plugin retrieval tools. However, it lacks explicit guidance on when-not-to-use or direct comparison to siblings like 'get-all-plugin-steps' or 'get-plugin-assemblies'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-entity-relationshipsGet Entity RelationshipsB

Get relationships (one-to-many and many-to-many) for a PowerPlatform entity

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNameYesThe logical name of the entity
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
entityNameYes
relationshipsYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full disclosure burden. Adds specificity by enumerating relationship types (1:N, N:N) not obvious from the tool name, but omits safety characteristics (read-only), performance implications, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence efficiently front-loaded with the action verb. No wasted words, though brevity may be excessive given zero annotation coverage and the need for behavioral context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple read operation with 100% schema coverage and existing output schema (relieving need to document return values). However, lacks behavioral context that annotations would normally provide, leaving gaps in safety and operational characteristics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, establishing baseline 3. Description implies the entityName refers to a PowerPlatform logical name, but adds no syntax examples, format constraints, or semantic details beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific action ('Get') and resource ('relationships'), distinguishing from sibling tools like get-entity-attributes by specifying relationship types ('one-to-many and many-to-many'). Clarifies this targets PowerPlatform entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no guidance on when to use this tool versus alternatives like get-entity-metadata (which might overlap) or prerequisites for invocation. No mention of when the optional environment parameter should be specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-environment-variablesGet Environment VariablesB

Get environment variable definitions and their current values from the PowerPlatform environment

ParametersJSON Schema
NameRequiredDescriptionDefault
maxRecordsNoMaximum number of records to return (default: 100)
managedOnlyNoOnly return managed environment variables (default: false)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
environmentVariablesYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It specifies that both definitions and current values are retrieved, which adds useful behavioral context. However, it fails to explicitly confirm the read-only/non-destructive nature of the operation or mention pagination behavior implied by 'maxRecords'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant words. However, it is arguably too concise given the lack of annotations and usage guidelines, leaving operational context underspecified despite the efficient structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 optional parameters, an output schema (which handles return documentation), and simple scalar inputs, the description is minimally adequate. However, the absence of annotations combined with the lack of behavioral safety disclosure and usage guidelines leaves notable gaps for an agent making invocation decisions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, establishing a baseline of 3. The description does not add specific parameter guidance (e.g., explaining that omitting 'environment' uses the default, or when to use 'managedOnly'), but the schema sufficiently documents all three parameters without additional textual support.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action (Get) and resource (environment variable definitions and current values) with scope (PowerPlatform environment). However, it does not explicitly differentiate from siblings like 'get-record' or 'query-records' that could theoretically retrieve similar data, though the specific resource naming helps implicit distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as 'get-record' or 'query-records'. It does not mention prerequisites, nor does it explain when to filter using 'managedOnly' versus retrieving all variables.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-flow-definitionGet Flow DefinitionB

Get a Power Automate flow with its complete definition or a parsed summary of triggers, actions, and connectors

ParametersJSON Schema
NameRequiredDescriptionDefault
flowIdYesThe workflow ID (GUID)
summaryNoReturn a parsed summary instead of the full definition (default: false)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
flowDefinitionYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It successfully describes what the tool returns (triggers, actions, connectors), but omits operational details such as error handling when a flow doesn't exist, authentication requirements, or whether the data is cached versus live.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficiently structured sentence that front-loads the core purpose. Every clause earns its place by distinguishing between the full definition and summary output modes without redundant verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 100% schema coverage and an output schema exists, the description appropriately avoids redundant return value documentation. It adequately covers the tool's functionality by specifying the types of data returned (triggers, actions, connectors), which is sufficient for a read-only retrieval tool of moderate complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all three parameters (flowId, summary, environment) adequately documented in the schema. The description references 'parsed summary' which aligns with the summary parameter, but adds no additional semantic context (like valid environment name formats) beyond what the schema already provides, warranting the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action ('Get') and resource ('Power Automate flow') and specifies the output content ('complete definition' or 'parsed summary of triggers, actions, and connectors'). However, it does not explicitly distinguish when to use this versus sibling tools like 'get-workflow-definition' or 'get-flows'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the 'summary' parameter versus full definition, but provides no explicit guidance on when to select this tool over alternatives like 'get-flows' (for listing) or 'get-workflow-definition' (for classic workflows), nor does it mention prerequisites like needing the flow ID.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-flow-inventoryGet Flow InventoryA

Get complete inventory of all cloud flows (name, state, modified date). Lighter than scan-flow-health as it does not fetch run history.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxRecordsNoMaximum flows to return (default: 500)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It adds valuable context about performance ('lighter') and output fields (name, state, modified date), but lacks disclosure on safety (read-only status), pagination behavior with maxRecords, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. First sentence establishes purpose and output content; second sentence provides sibling differentiation and behavioral comparison. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter inventory tool with no output schema, the description adequately covers return value hints (name, state, modified date) and sibling context. Missing explicit read-only confirmation and pagination details prevents a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, establishing baseline 3. The description does not add parameter-specific semantics (e.g., explaining the 500 default or environment fallback), but the schema is fully self-documenting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb 'Get' with clear resource 'complete inventory of all cloud flows' and explicitly distinguishes from sibling tool 'scan-flow-health' by contrasting functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly compares to sibling 'scan-flow-health', stating this is 'Lighter' and 'does not fetch run history', providing clear guidance on when to use this tool versus the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-flow-run-detailsGet Flow Run DetailsA

Get detailed flow run information including action-level outputs and errors. For failed actions, fetches detailed error messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
flowIdYesThe workflow ID (GUID)
runIdYesThe flow run ID (Flow API run name or Dataverse flowrunid GUID)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
flowIdYes
statusNo
actionsSummaryYes
failedActionErrorsYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It adds valuable behavioral context about granularity ('action-level outputs'), but omits safety indicators (read-only nature), performance characteristics (potentially heavy query for complex flows), or error handling behavior when IDs are invalid. The 'Get' verb implies safety, but explicit confirmation is absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste. The first establishes the core capability (detailed flow run info with action outputs), and the second adds the specific value proposition for failed actions. Information is front-loaded and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (covering return values), 100% input schema coverage, and simple parameter types (no nested objects), the description provides sufficient context for invocation. However, without annotations, the description could have improved completeness by noting the read-only nature of the operation or any permission requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage with clear definitions for flowId, runId, and environment. The description adds no explicit parameter guidance, but given the complete schema, it doesn't need to. Baseline 3 is appropriate since the schema fully documents parameter semantics without requiring elaboration in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves 'detailed flow run information' including 'action-level outputs and errors,' which effectively distinguishes it from sibling tools like get-flow-runs (likely a list view) and get-flow-definition (static configuration). The mention of 'failed actions' and 'detailed error messages' specifically positions this as a debugging/diagnostic tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage scenarios through 'failed actions' and error message retrieval, suggesting when to use it (troubleshooting). However, it lacks explicit guidance on when to choose this over get-flow-runs or prerequisites (e.g., that you must obtain runId from a previous list call), and does not mention alternatives like resubmit-flow-run for remediation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-flow-runsGet Flow RunsC

Get flow run history for a specific Power Automate flow

ParametersJSON Schema
NameRequiredDescriptionDefault
flowIdYesThe workflow ID (GUID)
statusNoFilter by status: Succeeded, Failed, Running, Waiting, Cancelled
startedAfterNoOnly return runs started after this date (ISO 8601)
startedBeforeNoOnly return runs started before this date (ISO 8601)
maxRecordsNoMaximum number of runs to return (default: 50, max: 250)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
flowIdYes
totalCountYes
hasMoreYes
runsYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It fails to indicate whether this is a read-only operation, does not describe pagination behavior (despite maxRecords parameter implying it), and omits any mention of default sorting, rate limiting, or the scope of 'history' returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

While the single sentence is efficient and front-loaded, it is undersized for the tool's complexity (6 parameters, numerous similar siblings, output schema). Given the contextual density required, the description lacks necessary elaboration to guide proper usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema (reducing the need to describe return values), the description is incomplete given the crowded sibling namespace. It fails to clarify that this retrieves multiple historical runs versus single-run details, and omits behavioral constraints that annotations would typically cover.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, documenting all 6 parameters including date formats and status values. The description itself adds no parameter-specific context, but given the comprehensive schema coverage, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Get) and resource (flow run history for a Power Automate flow). However, it does not explicitly differentiate from similar sibling tools like 'get-flow-run-details' (which likely retrieves specific run details rather than history lists) or 'get-flows' (which retrieves flows rather than runs).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as 'get-flow-run-details' for specific run inspection, or 'resubmit-flow-run' for retry scenarios. No prerequisites, filtering recommendations, or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-flowsGet FlowsB

Get Power Automate cloud flows with smart filtering (excludes system, Copilot Sales, and Customer Insights flows by default)

ParametersJSON Schema
NameRequiredDescriptionDefault
activeOnlyNoOnly return activated flows (default: false)
maxRecordsNoMaximum number of flows to return (default: 25)
excludeCustomerInsightsNoExclude Customer Insights flows (default: true)
excludeSystemNoExclude SYSTEM-modified flows (default: true)
excludeCopilotSalesNoExclude Copilot for Sales flows (default: true)
nameContainsNoFilter flows by name (contains match)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalCountYes
hasMoreYes
flowsYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full disclosure burden. It successfully documents default exclusions (system, Copilot Sales, Customer Insights flows) but omits pagination behavior, rate limits, or auth requirements despite having 7 parameters and an output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, efficient sentence front-loaded with the core action. The parenthetical default exclusions earn their place by conveying critical behavioral information without verbosity. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a listing tool with 100% schema coverage and output schema present. However, given the high sibling density (get-flow-definition, get-flow-inventory, get-flow-runs), the description should explain the distinction between these similar tools to prevent selection errors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, establishing baseline 3. The description references the default filtering behavior corresponding to boolean parameters, but adds no semantic depth beyond what the schema already documents for the 7 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves 'Power Automate cloud flows' with specific verb-resource pairing. However, it fails to distinguish from siblings like 'get-flow-inventory' or 'get-flow-definition', leaving ambiguity about which flow-retrieval tool to use.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'get-flow-definition' or 'get-flow-inventory'. The phrase 'smart filtering' hints at use cases but doesn't clarify prerequisites or selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-global-option-setGet Global Option SetC

Get a global option set definition by name

ParametersJSON Schema
NameRequiredDescriptionDefault
optionSetNameYesThe name of the global option set
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
optionSetNameYes
optionSetYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. While 'Get' implies read-only behavior, the description fails to disclose error handling (what happens if the name doesn't exist?), case sensitivity, caching, or whether this operation is idempotent and safe. Insufficient for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence of seven words that efficiently conveys the core operation. No redundancy or filler. However, given the complete lack of annotations, the description is arguably too terse and could benefit from one additional behavioral clause without violating conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 100% schema coverage, a simple parameter structure, and an output schema present, the description meets minimum requirements. However, it lacks domain context explaining what 'global option sets' are (Dataverse/Power Platform concepts) and how they differ from local option sets, which would help agents select this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both optionSetName and environment well-documented in the schema. The description adds no additional parameter semantics (examples, format constraints, case sensitivity), meeting the baseline expectation for high-coverage schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb (Get), resource (global option set definition), and identification method (by name). Specific enough to distinguish from sibling metadata tools like get-entity-metadata or get-entity-attributes. Lacks explicit scope constraints or domain context that would make it a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no guidance on when to use this tool versus alternatives like query-records or get-entity-metadata. No mention of prerequisites, default environment behavior implications, or typical use cases for global option sets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-ootb-workflowsGet OOTB WorkflowsA

Get all non-cloud-flow workflows: background workflows, business rules, actions, BPFs, on-demand workflows

ParametersJSON Schema
NameRequiredDescriptionDefault
maxRecordsNoMaximum records (default: 500)
categoriesNoWorkflow categories to include. 0=Background, 1=On-Demand, 2=Business Rule, 3=Action, 4=BPF
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, yet description lacks disclosure of read-only safety, return format, pagination behavior beyond the parameter name, or error conditions. Only describes the filtered entity types.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with verb and scope. Colon-separated list efficiently enumerates included types without redundancy. No filler words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a list-retrieval tool with well-documented schema. Defines the entity set clearly, though could improve by noting it returns a collection/list given the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While schema has 100% coverage, the description adds value by mapping the abstract 'non-cloud-flow' concept to the specific category types listed, reinforcing what the numeric category codes (0-4) represent in business terms.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific action ('Get') and resource ('non-cloud-flow workflows'), distinguishing from cloud flows. Lists exact workflow types covered (background, business rules, actions, BPFs, on-demand), clearly defining scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implicitly distinguishes use case via 'non-cloud-flow' qualifier, suggesting when not to use it (avoid for cloud flows). However, fails to clarify relationship to sibling 'get-workflows' or when to prefer one over the other.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-plugin-assembliesGet Plugin AssembliesC

Get all plugin assemblies in the environment

ParametersJSON Schema
NameRequiredDescriptionDefault
includeManagedNoInclude managed assemblies (default: false)
maxRecordsNoMaximum number of records to retrieve (default: 100)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalCountYes
assembliesYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure but offers only the basic operation. It does not clarify that this returns a summary list (implied by 'all'), mention performance implications of retrieving all assemblies, or indicate whether results are filtered by the includeManaged parameter behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no redundant words. However, given the tool's three optional parameters and the presence of similar sibling tools, the extreme brevity leaves important contextual gaps.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the output schema handles return value documentation and the input schema covers parameters adequately, the description lacks contextual guidance about the tool's role in the plugin management workflow and its relationship to sibling tools that retrieve complete assembly details or plugin steps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all three parameters (includeManaged, maxRecords, environment). Since the schema fully documents the parameters, the description does not need to add parameter details, meeting the baseline expectation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb ('Get') and identifies the resource ('plugin assemblies') and scope ('in the environment'). However, it fails to distinguish from the sibling tool 'get-plugin-assembly-complete', which likely retrieves detailed information versus this tool's summary list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get-plugin-assembly-complete' or 'get-all-plugin-steps', nor does it mention prerequisites such as required permissions for accessing plugin assemblies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-plugin-assembly-completeGet Plugin Assembly CompleteB

Get a plugin assembly by name with all related plugin types, steps, and images

ParametersJSON Schema
NameRequiredDescriptionDefault
assemblyNameYesThe name of the plugin assembly
includeDisabledNoInclude disabled steps (default: false)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
assemblyYes
pluginTypesYes
stepsYes
validationYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it indicates the scope of retrieval ('all related'), it fails to mention safety characteristics (read-only status), performance implications of fetching complete assemblies, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of a single, efficient sentence that is front-loaded with the action verb. Every word serves a purpose, with zero redundancy or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and 100% parameter coverage, the description adequately explains what makes this 'complete' versus other retrieval tools. However, it lacks safety/behavioral context that would normally be covered by annotations or additional description text.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, establishing a baseline of 3. The description reinforces the 'by name' lookup semantics for the required assemblyName parameter and implies the comprehensive nature of the retrieval, but does not add significant syntax, format, or usage details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get'), identifies the resource ('plugin assembly'), and clearly distinguishes from siblings by specifying 'by name' (singular lookup vs. the plural 'get-plugin-assemblies') and 'with all related plugin types, steps, and images' (comprehensive retrieval vs. partial siblings like 'get-all-plugin-steps').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives such as 'get-plugin-assemblies' (which likely returns a list) or 'get-all-plugin-steps' (which returns only steps). There are no stated prerequisites or exclusions for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-plugin-trace-logsGet Plugin Trace LogsC

Get plugin trace logs with filtering options

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNameNoFilter by entity name
messageNameNoFilter by message name (e.g., 'Create', 'Update')
correlationIdNoFilter by correlation ID
pluginStepIdNoFilter by plugin step ID
exceptionOnlyNoOnly show logs with exceptions (default: false)
hoursBackNoHours to look back (default: 24)
maxRecordsNoMaximum number of records (default: 50)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalCountYes
logsYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, yet description discloses no behavioral traits. Fails to mention log retention periods, whether results are real-time or delayed, performance implications of large hoursBack values, or that exceptionOnly filters for errors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise single sentence with no wasted words. Verb-fronted structure. However, brevity comes at the cost of completeness for an 8-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Inadequate for complexity: 8 parameters with time-range defaults (hoursBack), exception filtering, and multi-environment support. Output schema exists but description omits what trace logs contain (execution duration, exception details, plugin step sequence).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, establishing baseline 3. Description mentions 'filtering options' generically but adds no semantic context beyond schema (e.g., explaining correlationId traces request chains across plugins or that environment defaults to the current one).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the resource ('plugin trace logs') and hints at capabilities ('filtering options'), but borders on tautology by restating the tool name. Does not differentiate from siblings like 'get-entity-plugin-pipeline' (configuration) vs this tool's execution logs purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'get-entity-plugin-pipeline' or 'get-flow-runs'. Does not mention that this is for debugging plugin execution history or when correlationId filtering is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-publishersGet PublishersA

Get all non-readonly publishers in the PowerPlatform environment

ParametersJSON Schema
NameRequiredDescriptionDefault
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
publishersYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It successfully indicates the filtering behavior (excludes readonly publishers) but fails to disclose safety characteristics, error conditions, or side effects. 'Get' implies read-only, but explicit confirmation is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no redundant words. It front-loads the action and scope immediately, delivering maximum information density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (one optional string parameter), 100% schema coverage, and presence of an output schema, the description is adequate. It successfully conveys the core retrieval logic and filtering criteria, though it could briefly note the default environment behavior mentioned in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for the single 'environment' parameter. The description adds no explicit parameter guidance, meeting the baseline expectation that the structured schema carries the semantic weight when coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description provides a specific verb (Get), clear resource (publishers), scope filter (non-readonly), and domain context (PowerPlatform environment). It clearly distinguishes this tool from siblings that retrieve flows, solutions, or entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, prerequisites (e.g., permissions needed to view publishers), or when it might be inappropriate to use. In a server with numerous 'get-' tools, explicit contextual guidance is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-recordGet RecordC

Get a specific record by entity name (plural) and ID

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNamePluralYesThe plural name of the entity (e.g., 'accounts', 'contacts')
recordIdYesThe GUID of the record
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
entityNamePluralYes
recordIdYes
recordYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Get' implies a read operation, the description does not confirm this is safe/non-destructive, nor does it describe error behavior (e.g., record not found), authentication requirements, or whether all fields are returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that is front-loaded with the action verb. There is no redundant or wasteful text. However, given the absence of annotations and the presence of behavioral gaps, the description borders on under-specification rather than optimal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the basic operation but leaves gaps in behavioral context appropriate for a data retrieval tool with no annotations. While the output schema handles return value documentation, the description omits error handling, environment selection implications, and field expansion behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already fully documents all three parameters including examples. The description merely references 'entity name (plural)' and 'ID' which parallels the schema without adding syntax details, validation rules, or usage patterns beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('record'), and specifies the lookup method ('by entity name and ID'). The word 'specific' hints at single-record retrieval, distinguishing it from sibling 'query-records', but it lacks explicit differentiation from similar getters like 'get-entity-metadata'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'query-records' (for searching multiple records) or 'get-entity-metadata' (for schema information). No prerequisites, error conditions, or usage constraints are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-security-role-privilegesGet Security Role PrivilegesC

Get privileges assigned to a specific security role, optionally filtered by entity or access right

ParametersJSON Schema
NameRequiredDescriptionDefault
roleIdYesThe security role ID (GUID)
entityFilterNoFilter privileges by entity name (contains match)
accessRightFilterNoFilter privileges by access right (e.g., Read, Write, Create, Delete)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
roleIdYes
privilegesYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the optional filtering behavior but fails to disclose other critical behavioral traits such as error handling (e.g., behavior when roleId is invalid), whether results include inherited privileges, pagination behavior, or response format details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that is appropriately front-loaded with the core action and resource. It avoids redundancy with the title and maintains appropriate length, though it could be slightly more informative without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (so return values need not be described) and 100% input schema coverage, the description provides the minimum viable context for a retrieval tool. However, it lacks richness regarding the domain context (what these privileges represent) and operational nuances that would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the parameters are already well-documented in the schema (including examples for accessRightFilter and environment). The description mentions the optional filters but does not add semantic value, syntax guidance, or usage patterns beyond what the schema already provides, warranting the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves privileges for a specific security role and mentions the optional filtering capability. However, while it implies distinction from sibling 'get-security-roles' by specifying 'specific security role', it does not explicitly contrast with alternatives or clarify when to use this versus querying all roles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions optional filters ('optionally filtered by entity or access right') but provides no explicit guidance on when to use this tool versus alternatives, prerequisites for usage, or scenarios where this would be inappropriate. The 'when-to-use' context is entirely absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-security-rolesGet Security RolesA

Get security roles in the PowerPlatform environment, filtered to unmanaged or customizable roles. Supports solution scoping and optional privilege details.

ParametersJSON Schema
NameRequiredDescriptionDefault
solutionUniqueNameNoFilter to roles in a specific solution
excludeSystemRolesNoExclude system roles like System Administrator (default: true)
maxRecordsNoMaximum number of records to return (default: 100)
includePrivilegesNoInclude privilege details for each role (default: false)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rolesYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It successfully communicates the filtering behavior (unmanaged/customizable roles) and optional inclusion of privilege details. However, it fails to explicitly state the read-only/safe nature of the operation or mention pagination behavior despite the maxRecords parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two efficiently structured sentences with zero waste. The first sentence front-loads the core action and scope, while the second sentence concisely lists key capabilities (solution scoping, privilege details) without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 5 optional parameters and existence of an output schema, the description adequately covers the tool's purpose and key behavioral distinctions (filtering, scoping). It appropriately omits return value details (handled by output schema) but could be improved by noting the read-only nature given the lack of safety annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is appropriately 3. The description adds conceptual value by mapping 'solution scoping' to solutionUniqueName and 'optional privilege details' to includePrivileges, but does not elaborate on parameter interactions or provide examples beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (Get), resource (security roles), and scope (PowerPlatform environment), while specifying the unique filtering behavior (unmanaged or customizable roles). However, it could more explicitly differentiate from the sibling 'get-security-role-privileges' tool, though 'optional privilege details' implies this tool focuses on the roles themselves.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides implied usage guidance by noting the tool retrieves 'unmanaged or customizable roles' and supports 'solution scoping,' suggesting when to use these features. However, it lacks explicit when-to-use/when-not-to-use guidance or direct comparison to sibling alternatives like 'get-security-role-privileges'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-service-endpointsGet Service EndpointsC

Get all service endpoints (Service Bus, webhooks, Event Hub, Event Grid)

ParametersJSON Schema
NameRequiredDescriptionDefault
maxRecordsNoMaximum records (default: 100)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure but offers minimal detail. It states 'Get all' without clarifying the pagination behavior implied by the maxRecords parameter (default 100), and omits return format, auth requirements, or rate limiting context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with the action verb front-loaded. While appropriately brief, the extreme conciseness contributes to the lack of behavioral and usage context, preventing a higher score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (2 simple parameters, no nested objects, 100% schema coverage) and absence of an output schema, the description adequately identifies the resource domain. However, it fails to compensate for missing annotations regarding pagination, return structure, or side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for both parameters (maxRecords and environment), establishing a baseline of 3. The description does not add supplementary parameter semantics (e.g., valid environment values, maxRecords constraints) beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('service endpoints'), and clarifies scope with concrete examples (Service Bus, webhooks, Event Hub, Event Grid). However, it does not explicitly differentiate from the many sibling 'get-' tools, relying instead on the specific resource name to imply distinctiveness.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, environment selection logic, or relationships to sibling tools like get-flows or get-solutions that might also interact with endpoint configurations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-solutionGet SolutionC

Get a specific solution by its unique name

ParametersJSON Schema
NameRequiredDescriptionDefault
uniqueNameYesThe unique name of the solution
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
uniqueNameYes
solutionYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure but fails to indicate whether this is a read-only operation, what data the solution object contains, or any rate limiting considerations. It relies solely on the implicit safety of the verb 'Get'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with zero redundancy. While appropriately brief, it errs on the side of under-specification rather than optimal information density, missing an opportunity to add usage context in a second sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema and simple parameter structure (2 primitives), the description adequately covers the basic contract. However, it lacks domain context (e.g., clarifying this is a Power Platform/Dataverse solution) that would help an agent understand the tool's place in the broader sibling toolset.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for both parameters ('uniqueName' and 'environment'). The description mentions retrieval 'by its unique name', which aligns with the required parameter, but adds no additional semantic context (e.g., format expectations, case sensitivity) beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), resource ('solution'), and lookup method ('by its unique name'). However, it does not explicitly differentiate from the sibling tool 'get-solutions' (plural), which would help agents choose between listing and single retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'get-solutions' or 'get-solution-components'. There is no mention of prerequisites, such as requiring the exact unique name versus display name, or environment selection logic.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-solution-componentsGet Solution ComponentsB

Get all components in a solution, ordered by component type

ParametersJSON Schema
NameRequiredDescriptionDefault
solutionUniqueNameYesThe unique name of the solution
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
solutionUniqueNameYes
componentsYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds valuable context about result ordering ('ordered by component type'), but fails to disclose safety characteristics (read-only status), error handling (what happens if solutionUniqueName doesn't exist), or performance characteristics (pagination, limits).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is front-loaded with the action verb, includes zero filler words, and earns its length by conveying both the retrieval action and the ordering behavior. No restructuring or shortening would improve clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (relieving the description from documenting return values) and the input schema is fully documented, the description is nearly complete. It could be improved by clarifying what constitutes a 'component' (entities, flows, web resources, etc.) in this domain context, but the essential invocation details are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with 'solutionUniqueName' and 'environment' fully documented in the schema. The description adds no additional parameter semantics, but none are needed given the complete schema documentation. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves 'all components in a solution' and distinguishes itself from sibling 'get-solution' (which likely retrieves metadata) by specifying 'components'. The ordering detail ('ordered by component type') adds specific behavioral scope. However, it lacks explicit differentiation from other component-related siblings like 'check-component-dependencies'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get-solution' (which gets solution metadata vs. contents) or 'export-solution' (which packages components). No prerequisites, exclusions, or workflow context is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-solutionsGet SolutionsA

Get all visible solutions in the PowerPlatform environment, ordered by creation date

ParametersJSON Schema
NameRequiredDescriptionDefault
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
solutionsYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It successfully reveals the default sort order ('ordered by creation date') and scope ('visible' implying permission filtering), but omits other behavioral traits like pagination behavior, performance characteristics, or response format details (though an output schema exists).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the action verb and packs in essential details: scope ('all visible'), domain ('PowerPlatform environment'), and behavioral ordering ('ordered by creation date'). No words are wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (single optional parameter, read-only list operation) and the presence of an output schema, the description is nearly complete. It appropriately covers the key behavioral nuance (creation date ordering). A brief distinction from the singular 'get-solution' sibling would achieve full completeness, but the current state is adequate for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for its single parameter ('environment'), establishing a baseline score of 3. The tool description mentions 'in the PowerPlatform environment,' providing contextual linkage to the parameter, but does not add syntax details, validation rules, or usage examples beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get'), resource ('solutions'), and scope ('all visible... in the PowerPlatform environment'). The use of 'all' effectively distinguishes this from the sibling tool 'get-solution' (singular), indicating this returns a collection rather than a single item.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the phrase 'all visible solutions,' suggesting this is for enumeration rather than targeted retrieval. However, it lacks explicit guidance on when to use this versus the singular 'get-solution' sibling, and does not mention any prerequisites or exclusions for use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-workflow-definitionGet Workflow DefinitionB

Get a specific classic workflow with its complete XAML definition or a structured summary

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowIdYesThe workflow ID (GUID)
summaryNoReturn a parsed summary instead of raw XAML (default: false)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It discloses output format options (XAML vs. structured summary) and identifies the target as a 'classic' workflow type, but fails to mention safety properties (read-only), error behaviors, or authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, information-dense sentence that front-loads the core action. Every term ('specific', 'classic', 'XAML', 'structured summary') serves to differentiate scope or output format without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a retrieval tool with a simple 3-parameter schema and no output schema, the description adequately covers the core function. However, given the lack of annotations, it leaves gaps regarding error handling, default environment resolution, and the distinction between classic workflows and modern flows.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is appropriately set at 3. The description reinforces the summary parameter's purpose by mentioning 'structured summary' and 'XAML definition', but does not add significant semantic detail beyond what the schema already provides for workflowId or environment.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('classic workflow'), and implicitly distinguishes from siblings via 'specific' (contrasting with get-workflows) and 'classic' (contrasting with get-flow-definition). However, it does not explicitly reference sibling tools to clarify selection criteria.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives like get-workflows or get-flow-definition. It omits prerequisites, error conditions, or environment selection logic beyond the schema description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-workflowsGet WorkflowsC

Get all classic Dynamics workflows in the environment

ParametersJSON Schema
NameRequiredDescriptionDefault
activeOnlyNoOnly return active workflows (default: false)
maxRecordsNoMaximum number of records to retrieve (default: 25)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalCountYes
hasMoreYes
requestedMaxYes
workflowsYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full disclosure burden but reveals almost nothing about behavior: it doesn't explain pagination (despite maxRecords parameter), what constitutes a 'classic' workflow technically, whether inactive workflows are included by default, or what the output schema contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence of 7 words with no filler. However, given the complexity of the Dynamics workflow ecosystem and dense sibling namespace, extreme brevity becomes under-specification rather than efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Inadequate for the crowded tool namespace. With 20+ sibling tools including similar 'get-workflow-definition', 'get-flows', and 'search-workflows', the description fails to clarify scope boundaries, return value structure (despite output schema existing), or prerequisites for the 'environment' parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, so the schema documents parameters adequately. The description adds no parameter context, but baseline 3 applies since no compensation is needed for schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource as 'classic Dynamics workflows' using ecosystem-specific terminology that distinguishes it from siblings like 'get-flows' (modern Power Automate) and 'get-ootb-workflows'. However, it lacks explicit differentiation from 'search-workflows' and 'get-workflow-definition'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance provided on when to use this tool versus alternatives like 'search-workflows' (which likely offers filtering) or 'get-workflow-definition' (which retrieves specific details). The agent cannot determine if this returns metadata or full definitions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query-recordsQuery RecordsC

Query records using an OData filter expression

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNamePluralYesThe plural name of the entity (e.g., 'accounts', 'contacts')
filterYesOData filter expression (e.g., "name eq 'test'" or "createdon gt 2023-01-01")
maxRecordsNoMaximum number of records to retrieve (default: 50)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
entityNamePluralYes
filterYes
countYes
recordsYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With zero annotations provided, the description carries full behavioral disclosure burden but offers minimal detail. While 'Query' implies a read-only operation, the description doesn't confirm safety, disclose default limits (though maxRecords default is in schema), mention pagination behavior, or explain that OData syntax errors will cause failures.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise at six words with no filler. The single sentence efficiently conveys the core mechanism. However, given the tool's complexity (4 parameters, OData syntax requirements, multiple siblings), this brevity borders on under-specification rather than optimal information density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description identifies the OData querying paradigm, which is essential context. However, given the absence of annotations and the presence of many specialized retrieval alternatives, it inadequately contextualizes when this generic query tool is appropriate. The output schema covers return values, but operational scope remains under-explained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, establishing a baseline of 3. The description mentions 'OData filter expression' which aligns with the filter parameter, but adds no semantic detail beyond the schema for entityNamePlural, maxRecords, or environment parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool queries records and specifies the OData filter mechanism. However, it fails to distinguish from the sibling 'get-record' tool (likely for single-record retrieval by ID) or clarify that this returns multiple records, which is implied by the entityNamePlural parameter but not stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance provided on when to use this generic query tool versus the many specific 'get-*' siblings (e.g., get-flows, get-solutions). No mention of prerequisites, performance considerations for large datasets, or when to prefer specific entity getters over this flexible but potentially slower query method.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resubmit-flow-runResubmit Flow RunB

Resubmit/retry a failed flow run using the original trigger inputs

ParametersJSON Schema
NameRequiredDescriptionDefault
flowIdYesThe workflow ID (GUID)
runIdYesThe flow run ID to resubmit
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
successYes
flowIdYes
originalRunIdYes
newRunIdYes
triggerNameYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It successfully notes that original trigger inputs are reused, but fails to disclose whether this creates a new run ID, overwrites existing data, requires specific auth scopes, or has rate limiting implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence of nine words with zero redundancy. Every word earns its place by conveying the action, target state, and execution mechanism.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description appropriately omits return value details. However, for a mutation operation with zero annotations, it should disclose safety characteristics (idempotency, destructive potential) which are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, establishing a baseline of 3. The description adds minimal parameter-specific context beyond the schema, though 'using the original trigger inputs' implicitly clarifies that runId refers to the failed execution whose inputs will be reused.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action (resubmit/retry), target resource (failed flow run), and key mechanism (original trigger inputs). However, it doesn't explicitly distinguish this from sibling 'cancel-flow-run' or clarify whether 'resubmit' and 'retry' are distinct operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by specifying 'failed flow run,' suggesting it should only be used on failed executions. However, it lacks explicit when-to-use guidance, prerequisites (e.g., required permissions), or comparison to alternatives like cancel-flow-run.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan-flow-healthScan Flow HealthA

Batch-scan all Power Automate cloud flows for health metrics. Fetches run history for each flow and computes success rates, failure counts. WARNING: batch operation that may take several minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysBackNoDays of run history to analyze (default: 7)
maxRunsPerFlowNoMax runs to check per flow (default: 100)
maxFlowsNoMax flows to scan (default: 500)
activeOnlyNoOnly scan activated flows (default: true)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full behavioral disclosure burden. It successfully warns that this is a 'batch operation that may take several minutes' and discloses the aggregation logic (fetches run history, computes rates). It lacks explicit read-only assurance or rate limit details, but covers the critical performance characteristic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with zero waste: action statement, computational details, and performance warning. Information is perfectly front-loaded with the core batch-scan purpose before the warning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters (all well-documented in schema), no annotations, and no output schema, the description compensates adequately by specifying the computed outputs (success rates, failure counts). It lacks explicit return structure description, but mentions sufficient detail about the health metrics to inform agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, establishing a baseline of 3. The description does not mention specific parameters, but the schema fully documents daysBack, maxFlows, activeOnly, etc. No additional parameter context (like recommended values for large environments) is provided in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (batch-scan), resource (Power Automate cloud flows), and specific outputs (computes success rates, failure counts). It distinguishes from sibling tools like get-flows or get-flow-runs by emphasizing the aggregate 'health metrics' nature and batch scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The WARNING about duration provides implicit guidance that this is for comprehensive health audits, not quick checks. However, it lacks explicit when-to-use/when-not-to-use guidance comparing it to get-flow-runs or get-flow-inventory for targeted troubleshooting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search-workflowsSearch WorkflowsB

Search workflows (both classic workflows and Power Automate flows) by name, entity, description, category, or state

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter by name (contains match)
primaryEntityNoFilter by primary entity logical name
descriptionNoFilter by description (contains match)
categoryNoFilter by category (0=Classic Workflow, 5=Power Automate Flow)
statecodeNoFilter by state (0=Draft, 1=Activated, 2=Suspended)
includeDescriptionNoInclude description in results (default: true)
maxResultsNoMaximum number of results (default: 50)
environmentNoEnvironment name (e.g. DEV, UAT). Uses default if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalCountYes
hasMoreYes
workflowsYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It successfully clarifies the tool searches across both classic and Power Automate flow types (unified search behavior), but fails to disclose other behavioral traits like read-only safety, default result limits when filters are omitted, or pagination behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with zero redundancy. Every word earns its place by defining scope and searchable dimensions. However, given the tool's complexity (8 parameters, many siblings), it borders on under-specification rather than optimal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and input schema is fully documented, the description meets minimum viability. However, with 8 optional parameters and numerous sibling retrieval tools, the description lacks guidance on default behavior when no filters are provided and omits differentiation from similar discovery tools, leaving contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, establishing a baseline of 3. The description adds minor semantic value by mapping user-friendly terms ('entity', 'state') to technical parameter names ('primaryEntity', 'statecode'), but does not elaborate on syntax requirements (e.g., logical name format for entities) or explain the purpose of parameters like 'includeDescription' or 'environment' beyond the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Search') and resource ('workflows'), explicitly distinguishing that it covers both 'classic workflows and Power Automate flows'—a key scope distinction from siblings like get-flows or get-workflows. However, it stops short of explicitly contrasting when to use this versus those retrieval alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists searchable fields (name, entity, description, category, state) which implies filtering usage, but provides no explicit when-to-use guidance or comparison to siblings like get-workflows or get-flow-inventory. The agent must infer this is for discovery/filtering versus direct retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific PowerPlatform components like flows, solutions, entities, plugins, and workflows, with clear naming that minimizes overlap. However, some tools like 'get-flows', 'get-flow-inventory', and 'scan-flow-health' could cause minor confusion as they all retrieve flow information but with different scopes or detail levels, requiring careful reading of descriptions.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, such as 'get-flow-runs', 'export-solution', and 'query-records'. All tools use snake_case without deviation, and verbs like 'get', 'export', 'cancel', and 'scan' are applied predictably across the set, making the naming scheme easy to understand and navigate.

Tool Count3/5

With 38 tools, the count is borderline high for a single server, suggesting potential over-scoping or fragmentation. While PowerPlatform is a broad domain, this many tools might overwhelm agents and indicate that some could be consolidated (e.g., multiple 'get' tools for similar entities). A more focused set of 15-25 tools would likely improve usability without losing functionality.

Completeness5/5

The tool set provides comprehensive coverage for PowerPlatform operations, including CRUD-like actions (e.g., 'export-solution', 'query-records'), monitoring ('scan-flow-health', 'get-flow-run-details'), and management tasks ('cancel-flow-run', 'check-delete-eligibility'). It spans key areas like flows, solutions, entities, plugins, and workflows with no obvious gaps, enabling agents to handle most common scenarios in this domain.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables CRUD operations and querying on Microsoft Dataverse through natural language.
    21
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Model Context Protocol (MCP) server for Microsoft Dynamics 365 Business Central. Provides AI assistants with direct access to Business Central data through properly formatted API v2.0 calls.
    6
    30
    8
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/michsob/powerplatform-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server