Tools Architecture in Microsoft Copilot Studio: Designing Executable Capabilities for Enterprise Agents

Introduction

In the previous article, we established one of the most important distinctions in Microsoft Copilot Studio architecture:

Knowledge = KNOW
Tool = DO

That model is intentionally simple.

Now we need to open the Tool layer and understand what actually happens inside it.

A Tool is not merely a button that calls Power Automate.

In modern Copilot Studio architecture, Tools participate directly in the Agent’s orchestration model.

For agents using generative orchestration, Microsoft documents that the orchestrator can use the name, description, inputs, outputs, conversation context, user intent, and previous capability usage when determining which Tool or other capability should participate in a plan.

This creates a fundamentally different architecture from a traditional application.

Traditional application:

Button
│
▼
Function
│
▼
API

Generative Agent:

Natural-Language Request
│
▼
Agent
│
▼
Generative Orchestration
│
▼
Capability Selection
│
▼
Tool
│
▼
Business Operation

The user might never explicitly select the Tool.

The Agent reasons about the request and determines which capability is appropriate.

That makes Tool design part of the Agent’s reasoning architecture.


1. What Is a Tool?

A Tool is an executable capability available to an Agent.

Conceptually:

Agent
│
▼
Tool
│
▼
Capability

That capability might:

  • execute a business process;
  • retrieve structured information;
  • call an external service;
  • execute an Agent flow;
  • invoke a Connector;
  • call a REST API;
  • execute a Prompt;
  • access capabilities exposed through MCP;
  • perform other supported operations.

The Tool therefore forms a boundary between:

AI Orchestration

and:

Executable Capability

2. Tools Are the Agent’s Executable Skills

A useful mental model is:

Agent = Orchestrator
Tools = Skills

Suppose we create an Employee Services Agent.

Its available Tools might be:

Employee Services Agent
│
├── Create Leave Request
├── Get Leave Request Status
├── Cancel Leave Request
├── Create IT Support Ticket
├── Get Support Ticket Status
└── Classify Employee Request

The Agent understands natural language.

The Tools provide concrete capabilities.


3. Tools Do Not Need to Be Transactions

The word “Action” can make us think only about changing data.

But a Tool can also retrieve information.

For example:

GetLeaveRequestStatus

does not necessarily change anything.

It executes a capability:

Input:
RequestId
Output:
Status

Therefore:

Tool ≠ Write Operation

A better definition is:

A Tool is a callable capability with a defined purpose and interface.


4. Tool Architecture

At a high level:

                    TOOL
                      │
        ┌─────────────┼─────────────┐
        │             │             │
        ▼             ▼             ▼
     INPUTS        EXECUTION      OUTPUTS

Example:

CreateAccessRequest
│
├── Inputs
│ ├── Employee
│ ├── Site
│ ├── Role
│ └── Reason
│
├── Execution
│ └── Agent Flow
│
└── Outputs
├── RequestId
└── Status

This is effectively a software contract.


5. The Tool Contract

We can model a Tool as:

Tool(
Input1,
Input2,
Input3
)
│
▼
Execution
│
▼
Output1,
Output2

For example:

CreateAccessRequest(
employeeEmail,
siteUrl,
requestedRole,
businessReason
)

returns:

requestId
status

This is very similar to a function.


6. Thinking of Tools as Functions

Traditional programming:

CreateAccessRequest(
employeeEmail,
siteUrl,
requestedRole
)

Copilot Studio Tool:

Natural Language
│
▼
Agent determines parameters
│
▼
CreateAccessRequest Tool

The difference is that the Agent can translate conversational intent into structured function parameters.

That is extremely powerful.


7. Natural Language Becomes Structured Inputs

Suppose the user says:

I need Member access to the Finance Planning site because I’m joining Project Atlas.

The Agent may determine:

site = Finance Planning
role = Member
businessReason =
"I'm joining Project Atlas."

Then:

CreateAccessRequest(
site,
role,
businessReason
)

The Tool does not need to understand the original conversation.

It receives structured parameters.


8. This Is an Important Boundary

The Agent handles:

Language
Intent
Context
Conversation

The Tool handles:

Defined Operation
Inputs
Outputs
Business Integration

Therefore:

Natural Language
│
▼
Agent
│
▼
Structured Contract
│
▼
Tool

This separation makes the architecture much easier to maintain.


9. Tool Metadata Matters

In traditional software, function names primarily help developers.

For example:

CreateRequest()

In generative orchestration, Tool metadata has another consumer:

The Agent Planner

Microsoft states that generative orchestration considers factors including:

  • Tool name;
  • Tool description;
  • conversation context;
  • inferred user intent;
  • available inputs and outputs;
  • previous Tool usage.

Therefore Tool metadata affects runtime behavior.


10. Metadata Becomes Executable Architecture

This is a major conceptual change.

Traditionally:

Metadata
│
▼
Documentation

With AI orchestration:

Metadata
│
├── Documentation
│
└── Runtime Selection Signal

The Agent uses metadata to reason about capability selection.

This means poorly written metadata can cause operational errors.


11. Tool Name

Consider:

Tool1

This communicates almost nothing.

Better:

Create SharePoint Access Request

Even better when several similar Tools exist:

Create Temporary SharePoint Site Access Request

The name should communicate the capability clearly.

Microsoft recommends descriptive and unique names rather than vague names.


12. Tool Description

Bad description:

Handles SharePoint.

The Agent has little information about when to use it.

Better:

Creates a temporary SharePoint site access
request for an employee after the target site,
requested permission level, expiration date,
and business justification are known.

Now the orchestrator can reason about the Tool’s purpose.


13. Describe When the Tool Should Be Used

A useful Tool description answers:

WHAT does this Tool do?
WHEN should the Agent use it?

Example:

Use this tool when an authenticated employee
wants to submit a new temporary SharePoint site
access request.
The tool creates the request record and returns
the request ID and initial status.

This is much more useful than:

Creates list items.

The Tool should expose business meaning, not merely technical implementation.


14. Describe What the Tool Does Not Do

When similar Tools exist, negative boundaries can help.

Suppose we have:

Create Access Request

and:

Get Access Request Status

Descriptions can explicitly distinguish them.

Create:

Creates a new SharePoint access request.
Do not use this tool to retrieve the status
of an existing request.

Status:

Retrieves the current status of an existing
SharePoint access request by request ID.
Do not use this tool to create a new request.

Microsoft’s current orchestration guidance specifically recommends reducing ambiguity between similar capabilities through clear names and descriptions.


15. Ambiguous Tools Create Routing Problems

Imagine:

Tool A:
Manage Request
Tool B:
Process Request
Tool C:
Handle Request

All descriptions say:

Handles employee requests.

The orchestrator must guess.

Instead:

Create Employee Access Request
Get Employee Access Request Status
Cancel Employee Access Request

The capability boundaries are much clearer.


16. Atomic Tools

This leads to the principle of Atomic Tools.

Prefer:

CreateAccessRequest
GetAccessRequestStatus
CancelAccessRequest

over:

ManageAccessRequests

unless the broader Tool is intentionally designed and strongly typed for multiple operations.

Atomic Tools improve:

  • security;
  • testing;
  • discoverability;
  • orchestration;
  • maintenance;
  • auditing.

17. Tool Inputs

Inputs define what information the Tool requires.

Example:

CreateAccessRequest
│
├── employeeEmail
├── siteUrl
├── requestedRole
├── expirationDate
└── businessReason

Each input should have:

Name
Type
Description

and, where applicable:

Validation

These definitions help both the integration layer and the Agent.


18. Input Names Matter

Bad:

p1
p2
p3

Better:

siteUrl
requestedRole
businessReason

The Agent can reason much more effectively about:

businessReason

than:

p3

Human-readable contracts improve generative orchestration.


19. Input Descriptions Matter

Suppose:

requestedRole

has no description.

The Agent may not understand the expected values.

Better:

requestedRole
The SharePoint permission level requested by
the employee. Allowed business values are
Read, Member, or Owner.

Now the expected semantic meaning is explicit.


20. Generative Slot Filling

One of the major capabilities of generative orchestration is automatic input collection.

Microsoft documents that the orchestrator can use available context to populate Tool inputs and can generate follow-up questions when required information is missing.

Suppose the Tool requires:

Site
Role
Reason

The user says:

I need access to Finance.

The Agent already has:

Site = Finance

but still needs:

Role
Reason

The orchestrator can ask for the missing information.


21. Traditional Slot Filling

Traditional chatbot design might require:

Question:
Which site?
Question:
Which role?
Question:
Why do you need access?

Every path is manually authored.


22. Generative Slot Filling

Generative orchestration can instead reason:

Required Inputs
│
├── Site
├── Role
└── Reason

against:

Conversation Context

and determine:

Site = already known
Role = missing
Reason = missing

Then ask only for what is required.

This can reduce large amounts of manual conversation design.


23. Context Can Supply Inputs

Suppose:

User:

I need Member access to Finance.

The Agent may extract:

site = Finance
role = Member

Then it only needs:

businessReason

The generated question might be:

What is the business reason for the access request?

This is a significant improvement over rigid forms disguised as chatbots.


24. Previous Outputs Can Become Inputs

The architecture becomes even more interesting when Tools are chained.

Tool A:

ResolveSharePointSite

returns:

siteId
siteUrl

Tool B:

CreateAccessRequest

requires:

siteId

Generative orchestration can construct a plan such as:

User Request
│
▼
Resolve Site
│
▼
siteId
│
▼
Create Access Request

The output of one capability becomes the input of another.


25. Tool Chaining

Microsoft documents that generative orchestration can select multiple capabilities and invoke them in sequence when necessary.

Conceptually:

Tool A
│
▼
Output A
│
▼
Tool B
│
▼
Output B
│
▼
Tool C

This allows the Agent to construct multi-step plans.


26. Tool Chaining vs Agent Flow

This creates an important architecture decision.

Should the Agent dynamically orchestrate:

Tool A
↓
Tool B
↓
Tool C

or should we create:

Agent Flow
│
├── Step A
├── Step B
└── Step C

The answer depends on how deterministic the process must be.


27. Dynamic Orchestration

Use dynamic Tool orchestration when:

The required sequence depends on user intent.
Different capabilities may be needed.
The order can vary.
AI reasoning adds value.

Example:

User:
"Find my request and explain why it is pending."

Possible plan:

Get Request
│
▼
Retrieve Approval Policy
│
▼
Explain Status

The orchestration is contextual.


28. Deterministic Agent Flow

Use an Agent flow when the process should always be:

Create Request
│
▼
Create Approval
│
▼
Update Request
│
▼
Notify Manager

This sequence is business logic.

It should not be reinvented by an LLM every time.


29. AI Decides What; Flow Decides How

A powerful pattern is:

Agent
│
▼
Which business capability is needed?
│
▼
Agent Flow
│
▼
How that capability executes

In simple terms:

The Agent can decide what capability is needed. The Flow can deterministically define how that capability is executed.

This creates a strong boundary between AI reasoning and business automation.


30. Tool Outputs

Outputs tell the Agent what happened.

Example:

CreateAccessRequest
│
└── Outputs
├── requestId
├── status
└── createdDate

Microsoft allows Tool outputs to be made available to the Agent and other capabilities.

Outputs therefore participate in both:

Response generation

and potentially:

Further orchestration

31. Good Outputs Are Structured

Prefer:

requestId = 1055
status = Pending
success = true

instead of:

"Everything worked and request 1055
was successfully created with status Pending."

Structured values are easier to consume.


32. Output Contracts

A mature Tool contract might be:

CreateAccessRequest
INPUT
-----
employeeEmail : string
siteId : string
role : string
reason : string
OUTPUT
------
success : boolean
requestId : integer
status : string
errorCode : string
errorMessage : string

Now both success and failure are explicit.


33. Avoid Ambiguous Success

Bad output:

result = "OK"

What does OK mean?

Better:

success = true
requestId = 1055
status = Pending

This creates a much stronger interface.


34. Error Outputs Matter

A Tool can fail.

Design for it.

Example:

success = false
errorCode = "ACCESS_DENIED"
errorMessage =
"The current identity isn't authorized
to create requests in this site."

The Agent can now respond appropriately.


35. Do Not Let the Model Guess Errors

Suppose the backend returns:

HTTP 403

The Agent should not invent:

SharePoint is temporarily unavailable.

The actual problem may be authorization.

Tool architecture should preserve meaningful failure information.


36. Tools Should Be Deterministic Where Possible

Microsoft’s current architecture guidance describes Tools and connectors as capabilities with defined inputs, outputs, and possible error conditions, and recommends thoroughly testing them because the orchestration layer treats them as reliable functions.

This suggests an important design principle:

The Tool boundary should be predictable even when the Agent calling it is generative.


37. Generative Outside, Deterministic Inside

A strong enterprise architecture is:

Generative Agent
│
▼
Tool Contract
│
▼
Deterministic Execution
│
▼
Enterprise System

This combines flexibility with control.


38. Tool Selection

With generative orchestration enabled, the Agent can dynamically decide when to use a Tool.

Microsoft exposes a configuration equivalent to:

Allow agent to decide dynamically when to use the tool.

When enabled, generative orchestration can choose the Tool. When disabled, the Tool is used only when explicitly invoked from a Topic.

This gives us two fundamentally different Tool invocation patterns.


39. Dynamic Invocation

User
│
▼
Agent
│
▼
Generative Orchestration
│
▼
Tool Selected

The Agent decides based on context.


40. Explicit Topic Invocation

User
│
▼
Topic
│
▼
Deterministic Logic
│
▼
Call Tool

The Tool is invoked at a known point in the Topic.

This gives us an important architecture choice:

AI-controlled selection

versus:

Process-controlled invocation

41. When Dynamic Invocation Makes Sense

Example:

Tools:

GetWeather
GetCurrencyRate
FindOffice
GetEmployeeProfile

The Agent can infer which capability matches the request.

There may be little value in creating a Topic for every possible Tool call.


42. When Explicit Invocation Makes Sense

Suppose:

Create Privileged Access Request

must occur only after:

Validate Employee
│
▼
Collect Reason
│
▼
Check Required Fields
│
▼
Show Confirmation
│
▼
Call Tool

A Topic may provide better deterministic control over the execution sequence.


43. Confirmation Before Tool Execution

Current Copilot Studio Tool settings include the ability to ask the end user before a Tool runs.

Conceptually:

Agent wants to run Tool
│
▼
User Confirmation
│
┌───┴───┐
│ │
Yes No
│ │
▼ ▼
Execute Cancel

This can be particularly valuable for impactful operations.


44. Confirmation Is a UX and Safety Boundary

Consider:

Delete the Project Atlas document.

A good architecture might require:

Interpret Intent
│
▼
Identify Document
│
▼
Confirm Destructive Action
│
▼
Authorize
│
▼
Execute

Confirmation does not replace authorization.

But it reduces accidental execution.


45. Confirmation Does Not Grant Permission

This is critical:

User clicked Confirm

does not mean:

User is authorized

Confirmation answers:

Does the user intend to perform this operation?

Authorization answers:

Is this user allowed to perform this operation?

These are separate controls.


46. Tool Authentication

Tools often need authentication.

Current Copilot Studio Tool configuration supports authentication patterns including End user credentials and Maker-provided credentials for applicable Tools.

This choice can radically change the security architecture.


47. End User Credentials

Conceptually:

User
│
▼
Agent
│
▼
Tool
│
▼
User Identity
│
▼
Target System

The backend operation runs in a user-related authentication context where supported.

This can help preserve the user’s own permission boundary.


48. Maker-Provided Credentials

Conceptually:

User
│
▼
Agent
│
▼
Tool
│
▼
Configured Connection
│
▼
Target System

The Tool executes using the configured connection rather than simply inheriting the user’s backend permissions.

This may be useful for service operations.

But it creates a significant security responsibility.


49. The Shared Credential Problem

Imagine the maker connection can:

Read Finance
Write Finance
Delete Finance

The user can:

Read Finance

If the Agent exposes a poorly controlled Tool using the maker connection:

User
│
▼
Agent
│
▼
Privileged Tool
│
▼
Delete Finance

the Agent can become a privilege escalation path.


50. Privileged Tools Need Strong Boundaries

A Tool using elevated credentials may need:

User identity validation
Authorization rules
Input validation
Operation restrictions
Approval
Auditing
Least privilege
Monitoring

The Tool should expose only the capability required.


51. Narrow Service Identity

Instead of giving the Tool:

Site Collection Administrator

perhaps it only needs permission to:

Add items to AccessRequests

The ideal model is:

Tool Responsibility
│
▼
Minimum Required Permission

This is least privilege.


52. Authentication Is Not Authorization

Again:

Authentication
│
▼
Who are you?

versus:

Authorization
│
▼
What can you do?

A successful Tool connection proves connectivity and authentication.

It does not automatically prove that the requested business operation is authorized.


53. Tool Authorization Should Be Explicit

For sensitive operations:

Tool Request
│
▼
Identity
│
▼
Authorization Check
│
▼
Business Rule
│
▼
Execute

Do not rely on the LLM deciding:

This person sounds like an administrator.


54. Tool Response Behavior

After a Tool executes, Copilot Studio can handle the result in different ways.

Current documentation describes response options including allowing the Agent to incorporate Tool output into its response, generating a contextual response, using a specific authored response, or sending an Adaptive Card.

This gives us another architectural decision:

Tool Output
│
▼
How should it reach the user?

55. Generative Response

For informational results:

Tool Output
│
▼
Agent
│
▼
Contextual Natural-Language Response

Example Tool result:

temperature = 18
rain = true

Agent:

It’s currently 18°C and raining.

Generative presentation is reasonable.


56. Deterministic Response

For transactional confirmation:

requestId = 1055
status = Pending

we may prefer a controlled template:

Request {requestId} was created successfully.
Current status: {status}.

The factual values still come directly from the Tool.


57. Adaptive Card Response

Structured business information can benefit from an Adaptive Card.

Example:

ACCESS REQUEST
Request ID: 1055
Site: Finance
Role: Member
Status: Pending
[View Request]

The Tool provides structured data.

The presentation layer formats it.


58. Tool Output Should Remain Authoritative

Whether the final response is:

Natural Language

or:

Adaptive Card

the transaction facts should come from the Tool output.

Never allow the language model to invent:

Request ID
Status
Approval
Transaction result

59. Tools and Topics Can Work Together

A Topic might:

Collect Inputs
│
▼
Validate
│
▼
Call Tool
│
▼
Inspect Output
│
▼
Branch

Example:

Tool.success = true
│
┌───┴───┐
│ │
true false
│ │
▼ ▼
Success Error

This is a very predictable architecture.


60. Tools and Generative Orchestration Can Work Together

Alternatively:

User
│
▼
Agent
│
▼
Generative Orchestration
│
▼
Tool
│
▼
Result
│
▼
Agent Response

This reduces manual Topic design.

The right choice depends on how much process control is required.


61. Tool Types

The Tool landscape can be modeled conceptually as:

                           TOOLS
                             │
        ┌────────────────────┼────────────────────┐
        │                    │                    │
        ▼                    ▼                    ▼
    CONNECTORS          AGENT FLOWS            PROMPTS
        │                    │                    │
        ▼                    ▼                    ▼
External Services      Automation           AI Reasoning

        ┌────────────────────┼────────────────────┐
        │                    │
        ▼                    ▼
     REST API               MCP
        │                    │
        ▼                    ▼
 Direct API           Tool Ecosystem
 Integration

The exact available Tool categories depend on the current Copilot Studio experience and Agent harness. Microsoft now explicitly documents multiple harnesses, so Tool availability should always be checked for the Agent architecture being used.


62. Connector Tool

Use a Connector when an existing Power Platform Connector exposes the required capability.

Architecture:

Agent
│
▼
Connector Tool
│
▼
Connector
│
▼
Service

Advantages can include:

Predefined operations
Connection management
Power Platform governance integration
Reusable integration model

63. Agent Flow Tool

Use an Agent flow when the capability involves deterministic automation.

Agent
│
▼
Agent Flow
│
├── Validate
├── Query
├── Create
├── Update
└── Return

This is particularly useful for multistep business processes.


64. Prompt Tool

Use a Prompt when the Tool performs focused generative reasoning.

Agent
│
▼
Prompt Tool
│
▼
AI Model
│
▼
Classification / Extraction / Summary

Current Microsoft documentation describes Prompt outputs as typically text or JSON and allows Prompts to be invoked as Agent Tools or from Topics.


65. REST API Tool

Use a REST API Tool when a service exposes an API and direct Agent integration is appropriate.

Agent
│
▼
REST API Tool
│
▼
HTTP
│
▼
API
│
▼
JSON

This is particularly useful when a native Connector does not exist or when direct API integration better fits the architecture.


66. MCP Tool Architecture

MCP introduces:

Agent
│
▼
MCP Connection
│
▼
MCP Server
│
├── Tool A
├── Tool B
├── Tool C
└── Resources

This can become valuable when organizations expose standardized tool catalogs for Agents.

But MCP is not automatically better than Connectors or REST.

It solves a different integration problem.


67. Tool Type Decision

A simplified decision model:

Need capability
│
▼
Existing Connector?
│
Yes│
▼
Connector

Otherwise:

Need deterministic multistep process?
│
Yes│
▼
Agent Flow

Otherwise:

Need focused AI reasoning?
│
Yes│
▼
Prompt

Otherwise:

Need direct API integration?
│
Yes│
▼
REST API

Or:

Need standardized external tool ecosystem?
│
Yes│
▼
MCP

This is not an absolute hierarchy, but it is a useful starting point.


68. Do Not Add Integration Layers Without Reason

Suppose:

Agent

can directly call an existing supported Connector operation.

Do we need:

Agent
│
▼
Power Automate
│
▼
Custom API
│
▼
Azure Function
│
▼
Graph

perhaps not.

Every additional layer creates:

Latency
Maintenance
Authentication complexity
Monitoring requirements
Failure points
Cost

Architecture should be as simple as the requirement allows.


69. But Abstraction Can Be Valuable

The opposite is also true.

Suppose the same business operation is used by:

Agent A
Agent B
Power App
SPFx Application
External Application

A centralized API or reusable integration layer may be better than duplicating logic.

Architecture is about intentional tradeoffs.


70. Tool Design Should Hide Backend Complexity

The Agent should ideally call:

CreateEmployeeAccessRequest

not:

ExecuteHTTPPostToListGuid

The Tool boundary should expose business capability.

Backend implementation might involve:

Power Automate
SharePoint Connector
REST
Graph
Azure Function

but the Agent does not need to reason about those details.


71. Business Interface vs Technical Interface

Bad Agent-facing interface:

listGuid
fieldInternalName
odataFilter
httpMethod

Better:

employee
site
role
reason

Then the integration layer translates:

Business Parameters
│
▼
Technical Parameters

This is classic software architecture applied to Agent systems.


72. Tool Granularity and Security

Consider:

SharePointAdministration

with operations for:

Create site
Delete site
Grant access
Revoke access
Change owners
Delete files

This is a huge capability surface.

For an Employee Access Agent, expose only:

CreateAccessRequest

The narrower Tool is:

  • easier to secure;
  • easier to test;
  • easier for the Agent to select;
  • easier to audit.

73. Tool Granularity and Prompt Injection

Suppose malicious user content influences the Agent.

If the Agent only has:

GetWeather

the blast radius is small.

If it has:

GlobalTenantAdministration

the consequences are radically different.

Therefore Tool minimization is also an AI safety control.


74. Capability Exposure Is a Security Decision

Every Tool added to an Agent expands what the Agent can potentially attempt.

Conceptually:

Agent Capability Surface
│
▼
Available Tools

More Tools mean a larger execution surface.

This should be governed intentionally.


75. Tool Catalog Governance

Enterprise environments may eventually need a managed Tool catalog.

For every Tool:

Name
Owner
Purpose
Authentication Model
Permissions
Data Classification
Inputs
Outputs
Dependencies
Environment
Version
Risk Level

This becomes especially important when many Agents reuse enterprise capabilities.


76. Tool Ownership

Every production Tool should have an owner.

Someone must answer:

Who maintains it?
Who changes it?
Who approves permission changes?
Who responds when it fails?
Who knows which Agents depend on it?

An Agent is only as reliable as its dependencies.


77. Tool Lifecycle

A Tool has a lifecycle:

Design
│
▼
Develop
│
▼
Test
│
▼
Deploy
│
▼
Monitor
│
▼
Version
│
▼
Retire

This is ordinary enterprise software lifecycle management.

Generative AI does not eliminate it.


78. Tool Versioning

Suppose version 1 returns:

requestId
status

Version 2 changes:

status

to:

requestStatus

A Topic or Agent Flow expecting the old output might break.

Therefore Tool contracts require version discipline.


79. Tool Contract Changes Can Be Breaking Changes

Changing:

Input name
Input type
Required parameter
Output name
Output type
Authentication method

can affect consumers.

Treat Tool interfaces like API contracts.


80. ALM Matters

Production Tools should eventually participate in:

DEV
│
▼
TEST
│
▼
PROD

with controlled configuration.

This may involve:

Solutions
Connection References
Environment Variables
Environment-specific endpoints
Security configuration

We will examine ALM later in the series.


81. DLP Matters

A perfectly designed Tool can still be blocked by Power Platform governance.

Data Loss Prevention policies can control which Connectors and data capabilities can be used together.

Therefore:

Tool technically works

does not necessarily mean:

Tool is allowed in this environment

Governance is part of architecture.


82. Testing Tool Selection

Do not test only whether the Tool works.

Test whether the Agent chooses it correctly.

For example:

Tool:

Create Access Request

Tests:

"I need access to Finance."

Expected:

Select Create Access Request

But:

"What is our access policy?"

Expected:

Do NOT select Create Access Request
Use Knowledge

This is orchestration testing.


83. Negative Tests Are Essential

If we have:

Create Request
Get Request Status
Cancel Request

test:

"Create a request."

Expected:

Create
"Where is request 1055?"

Expected:

Status
"Cancel request 1055."

Expected:

Cancel

The Tools must not overlap semantically.


84. Test Missing Inputs

Suppose Create Request requires:

Site
Role
Reason

Test:

"I need access."

Expected behavior:

Agent collects missing information.

Then:

"I need Member access."

Expected:

Role = Member
Ask for remaining required values.

This validates generative slot filling.


85. Test Context Reuse

Conversation:

User:

I’m working on Project Atlas.

Later:

I need Member access to the Finance site for that project.

The Agent may use conversation context when populating Tool inputs.

Microsoft’s generative orchestration documentation confirms that conversation history can participate in capability selection and input filling.

This behavior must be tested because context can also be misunderstood.


86. Test Tool Failure

Simulate:

403
404
429
500
Timeout

and business errors:

Duplicate request
Invalid role
Site not found
User not authorized

The Agent should respond appropriately.


87. Test Authorization Separately

Do not test only:

Admin User

Test:

Normal User
Unauthorized User
Privileged User
External User

where relevant.

Tool security must be validated against real identity scenarios.


88. Test Confirmation

For Tools configured to request confirmation:

User requests Action
│
▼
Confirmation displayed
│
▼
Cancel

Verify that the Tool does not execute.

Then:

Confirm

Verify that it executes exactly once.


89. Test Duplicate Execution

A Tool should also be tested for:

Double click
Repeated user message
Retry
Network timeout
Conversation retry

especially for non-idempotent operations.


90. Observability

Production Tool architecture should eventually answer:

Which Tool ran?
Why was it selected?
Which inputs were provided?
Which identity executed?
How long did it take?
Did it succeed?
What did it return?
What downstream system was affected?

This is essential for troubleshooting and governance.


91. Troubleshooting Wrong Tool Selection

Suppose the Agent selects:

CancelAccessRequest

when the user asks:

What’s the status of my request?

Do not immediately redesign everything.

Investigate one variable at a time.

Start with:

Tool names

then:

Tool descriptions

then:

Input descriptions

then:

Agent Instructions

then broader orchestration design.

This isolates the cause.


92. Description Overlap Is a Common Cause

For example:

Tool A:

Handles access requests.

Tool B:

Handles access requests.

The orchestrator has little basis for choosing correctly.

Improve:

Get Access Request Status

Description:

Retrieves the current status of an existing
access request. Requires an existing request ID.
Does not create, modify, or cancel requests.

This gives the planner a much clearer semantic boundary.


93. Do Not Compensate with Giant Agent Instructions

A common mistake would be to write:

If the user says status, use Tool A.
If the user says create, use Tool B.
If the user says cancel, use Tool C.
If the user says pending...

and continue for hundreds of rules.

Better Tool metadata may solve the problem more cleanly.

Put responsibility at the correct architectural layer.


94. Instructions vs Tool Descriptions

Agent Instructions:

Define global behavior and boundaries.

Tool Description:

Defines what a specific capability does
and when it should be used.

Do not duplicate every Tool rule into Agent Instructions.


95. Tool Description as Capability Documentation

A good Tool description should be understandable even outside the current Agent.

Example:

Create Temporary SharePoint Access Request
Creates a new temporary access request for an
authenticated employee who needs access to a
SharePoint site. Use only for new requests.
Requires target site, requested role, expiration
date, and business justification. Returns the
request ID and initial status.

That is useful to:

Maker
Agent
Reviewer
Security Team
Future Maintainer

96. Tool Architecture and Multi-Agent Systems

Later, an Agent may delegate to another Agent.

We could have:

Enterprise Assistant
│
▼
SharePoint Access Agent
│
▼
CreateAccessRequest Tool

The Tool remains a business capability.

The multi-agent architecture simply adds another orchestration layer.

Good Tool boundaries survive architectural growth.


97. Tool Architecture and MCP

Later, the same capability might be exposed through MCP:

MCP Server
│
├── CreateAccessRequest
├── GetAccessRequestStatus
└── CancelAccessRequest

Multiple Agents could consume the same capabilities.

Again, good Tool contracts become reusable enterprise assets.


98. Tool Architecture and APIs

Likewise:

CreateAccessRequest Tool

might eventually call:

POST /api/accessrequests

The Agent does not need to know whether the implementation changed from:

Power Automate

to:

REST API

if the capability contract remains stable.

This is abstraction.


99. Enterprise Tool Architecture

At enterprise scale, we can imagine:

                         AGENTS
                            │
                            ▼
                     ORCHESTRATION
                            │
                            ▼
                      TOOL LAYER
                            │
      ┌─────────────────────┼─────────────────────┐
      │                     │                     │
      ▼                     ▼                     ▼
   CONNECTORS           AGENT FLOWS            PROMPTS
      │                     │                     │
      ├──────────────┬──────┴───────┬─────────────┤
                     │              │
                     ▼              ▼
                  REST APIs        MCP
                     │              │
                     └──────┬───────┘
                            │
                            ▼
                    ENTERPRISE SYSTEMS
                            │
          ┌─────────────────┼─────────────────┐
          ▼                 ▼                 ▼
      SHAREPOINT        DATAVERSE           APIs
          │                 │                 │
          ▼                 ▼                 ▼
      M365 DATA        BUSINESS DATA     EXTERNAL SYSTEMS

Surrounding everything:

ENTRA ID
AUTHENTICATION
AUTHORIZATION
DLP
GOVERNANCE
ALM
MONITORING
AUDIT

This is the architecture we are gradually constructing throughout this series.


100. The Core Tool Design Pattern

A reliable Tool architecture can be summarized as:

User Intent
│
▼
Agent
│
▼
Generative Orchestration
│
▼
Capability Selection
│
▼
Collect Required Inputs
│
▼
Validate
│
▼
Authorization
│
▼
Tool
│
▼
Deterministic Business Operation
│
▼
Structured Output
│
▼
Agent
│
▼
User Response

This is far more than:

Chatbot calls Flow.

It is an executable AI architecture.


Architecture Decision Table

RequirementRecommended Starting Point
Existing service with Power Platform ConnectorConnector Tool
Deterministic multistep processAgent Flow
Focused AI classification/extraction/summarizationPrompt Tool
Direct Agent-specific API integrationREST API Tool
Standardized external AI tool ecosystemMCP
Controlled conversational executionTopic → Tool
Flexible intent-based Tool selectionGenerative orchestration
Sensitive/destructive operationConfirmation + authorization + narrow Tool
Reusable enterprise capabilityStable business-oriented Tool contract
Exact transaction confirmationStructured Tool output
Tool with elevated credentialsStrong authorization + least privilege
Large reusable integration across Power PlatformConsider Custom Connector
Simple deterministic calculationDo not create Tool; use Power Fx

Tool Design Checklist

Before exposing a Tool to an Agent, verify:

  1. Does the Tool represent a clear business capability?
  2. Is its name unique and descriptive?
  3. Does its description explain what it does?
  4. Does the description explain when it should be used?
  5. Is its scope atomic enough?
  6. Are inputs clearly named?
  7. Are input types appropriate?
  8. Are input descriptions clear?
  9. Are required values validated?
  10. Are outputs structured?
  11. Is success explicit?
  12. Are failures explicit?
  13. Can the operation be safely retried?
  14. Could duplicate execution cause problems?
  15. Should the user confirm before execution?
  16. Which identity executes the Tool?
  17. What permissions does that identity have?
  18. Does the Tool follow least privilege?
  19. Could it create privilege escalation?
  20. Are DLP policies relevant?
  21. Is the Tool dynamically selected or explicitly invoked?
  22. Could its description overlap with another Tool?
  23. Does it expose unnecessary backend complexity?
  24. Is the Tool contract versioned?
  25. Can it move through DEV, TEST, and PROD?
  26. Is it monitored?
  27. Is it auditable?
  28. Who owns it?
  29. Which Agents depend on it?
  30. Is AI actually necessary for selecting this capability?

Conclusion

Tools are one of the most important architectural layers in Microsoft Copilot Studio because they connect AI reasoning with executable enterprise capabilities.

The Agent understands:

Language
Intent
Context

The orchestrator determines:

Which capability is required

The Tool defines:

What can be executed

The backend determines:

What actually happens

And the security architecture determines:

Whether it is allowed

The complete responsibility model is therefore:

USER
│
▼
Natural Language
│
▼
AGENT
│
▼
Interpret Intent
│
▼
ORCHESTRATOR
│
▼
Select Capability
│
▼
TOOL CONTRACT
│
├── Name
├── Description
├── Inputs
└── Outputs
│
▼
AUTHENTICATION
│
▼
AUTHORIZATION
│
▼
EXECUTION
│
▼
ENTERPRISE SYSTEM
│
▼
STRUCTURED RESULT
│
▼
AGENT
│
▼
USER

The core architectural principle is:

A Tool should expose a narrow, well-described, testable business capability to the Agent through a clear input/output contract while leaving deterministic execution, authorization, and authoritative state to the appropriate enterprise systems.

And an even shorter version:

Agent understands.
Orchestrator selects.
Tool executes.
Backend enforces.
System records.

That separation is one of the foundations of reliable enterprise Agent architecture.


Microsoft Learn References

Microsoft — Add tools to custom agents
Add tools to custom agents

Microsoft — Generative orchestration
Orchestrate agent behavior with generative AI

Microsoft — Generative orchestration FAQ
FAQ for generative orchestration

Microsoft — Generative orchestration architecture and guidance
Apply generative orchestration capabilities

Microsoft — Agent Tools architecture guidance
Use agent tools to extend, automate, and enhance your agents

Microsoft — Topic inputs and outputs
Manage topic inputs and outputs

Microsoft — Copilot Studio Agents overview
Agents overview

Microsoft — Prompts overview
Prompts overview


Series Progress

Article 14 of 50 completed.

Completed: 14
Remaining: 36
Progress: 28%

We have now reached:

Knowledge Architecture
│
▼
Knowledge → Retrieval → Grounding → Answer
Conversation Architecture
│
▼
Topics → Variables → Conditions → Power Fx
Focused AI
│
▼
Prompts
Execution Architecture
│
▼
Tools

The next step is where this becomes particularly practical.

Next Article — #15

Agent Flows in Microsoft Copilot Studio: Connecting AI Reasoning to Deterministic Business Automation

We will open this layer:

Agent
│
▼
Tool
│
▼
Agent Flow
│
├── Inputs
├── Deterministic Steps
├── Conditions
├── Connectors
├── Business Operations
├── Error Handling
└── Outputs
│
▼
Agent

Article #15 will establish exactly where Agent reasoning should stop and deterministic automation should begin.

Edvaldo Guimrães Filho Avatar

Published by