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 = KNOWTool = 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 = OrchestratorTools = 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:RequestIdOutput: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:
requestIdstatus
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 Planningrole = MemberbusinessReason ="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:
LanguageIntentContextConversation
The Tool handles:
Defined OperationInputsOutputsBusiness 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 accessrequest 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 employeewants to submit a new temporary SharePoint siteaccess request.The tool creates the request record and returnsthe 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 statusof an existing request.
Status:
Retrieves the current status of an existingSharePoint 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 RequestTool B:Process RequestTool C:Handle Request
All descriptions say:
Handles employee requests.
The orchestrator must guess.
Instead:
Create Employee Access RequestGet Employee Access Request StatusCancel Employee Access Request
The capability boundaries are much clearer.
16. Atomic Tools
This leads to the principle of Atomic Tools.
Prefer:
CreateAccessRequestGetAccessRequestStatusCancelAccessRequest
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:
NameTypeDescription
and, where applicable:
Validation
These definitions help both the integration layer and the Agent.
18. Input Names Matter
Bad:
p1p2p3
Better:
siteUrlrequestedRolebusinessReason
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:
requestedRoleThe SharePoint permission level requested bythe employee. Allowed business values areRead, 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:
SiteRoleReason
The user says:
I need access to Finance.
The Agent already has:
Site = Finance
but still needs:
RoleReason
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 knownRole = missingReason = 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 = Financerole = 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:
siteIdsiteUrl
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 = 1055status = Pendingsuccess = true
instead of:
"Everything worked and request 1055was successfully created with status Pending."
Structured values are easier to consume.
32. Output Contracts
A mature Tool contract might be:
CreateAccessRequestINPUT-----employeeEmail : stringsiteId : stringrole : stringreason : stringOUTPUT------success : booleanrequestId : integerstatus : stringerrorCode : stringerrorMessage : string
Now both success and failure are explicit.
33. Avoid Ambiguous Success
Bad output:
result = "OK"
What does OK mean?
Better:
success = truerequestId = 1055status = Pending
This creates a much stronger interface.
34. Error Outputs Matter
A Tool can fail.
Design for it.
Example:
success = falseerrorCode = "ACCESS_DENIED"errorMessage ="The current identity isn't authorizedto 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:
GetWeatherGetCurrencyRateFindOfficeGetEmployeeProfile
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 FinanceWrite FinanceDelete 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 validationAuthorization rulesInput validationOperation restrictionsApprovalAuditingLeast privilegeMonitoring
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 = 18rain = true
Agent:
It’s currently 18°C and raining.
Generative presentation is reasonable.
56. Deterministic Response
For transactional confirmation:
requestId = 1055status = 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 REQUESTRequest ID: 1055Site: FinanceRole: MemberStatus: 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 IDStatusApprovalTransaction 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 operationsConnection managementPower Platform governance integrationReusable 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:
LatencyMaintenanceAuthentication complexityMonitoring requirementsFailure pointsCost
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 AAgent BPower AppSPFx ApplicationExternal 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 AutomateSharePoint ConnectorRESTGraphAzure Function
but the Agent does not need to reason about those details.
71. Business Interface vs Technical Interface
Bad Agent-facing interface:
listGuidfieldInternalNameodataFilterhttpMethod
Better:
employeesiterolereason
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 siteDelete siteGrant accessRevoke accessChange ownersDelete 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:
NameOwnerPurposeAuthentication ModelPermissionsData ClassificationInputsOutputsDependenciesEnvironmentVersionRisk 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:
requestIdstatus
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 nameInput typeRequired parameterOutput nameOutput typeAuthentication 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:
SolutionsConnection ReferencesEnvironment VariablesEnvironment-specific endpointsSecurity 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 RequestUse Knowledge
This is orchestration testing.
83. Negative Tests Are Essential
If we have:
Create RequestGet Request StatusCancel 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:
SiteRoleReason
Test:
"I need access."
Expected behavior:
Agent collects missing information.
Then:
"I need Member access."
Expected:
Role = MemberAsk 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:
403404429500Timeout
and business errors:
Duplicate requestInvalid roleSite not foundUser not authorized
The Agent should respond appropriately.
87. Test Authorization Separately
Do not test only:
Admin User
Test:
Normal UserUnauthorized UserPrivileged UserExternal 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 clickRepeated user messageRetryNetwork timeoutConversation 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 existingaccess 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 doesand 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 RequestCreates a new temporary access request for anauthenticated employee who needs access to aSharePoint site. Use only for new requests.Requires target site, requested role, expirationdate, and business justification. Returns therequest ID and initial status.
That is useful to:
MakerAgentReviewerSecurity TeamFuture 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 IDAUTHENTICATIONAUTHORIZATIONDLPGOVERNANCEALMMONITORINGAUDIT
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
| Requirement | Recommended Starting Point |
|---|---|
| Existing service with Power Platform Connector | Connector Tool |
| Deterministic multistep process | Agent Flow |
| Focused AI classification/extraction/summarization | Prompt Tool |
| Direct Agent-specific API integration | REST API Tool |
| Standardized external AI tool ecosystem | MCP |
| Controlled conversational execution | Topic → Tool |
| Flexible intent-based Tool selection | Generative orchestration |
| Sensitive/destructive operation | Confirmation + authorization + narrow Tool |
| Reusable enterprise capability | Stable business-oriented Tool contract |
| Exact transaction confirmation | Structured Tool output |
| Tool with elevated credentials | Strong authorization + least privilege |
| Large reusable integration across Power Platform | Consider Custom Connector |
| Simple deterministic calculation | Do not create Tool; use Power Fx |
Tool Design Checklist
Before exposing a Tool to an Agent, verify:
- Does the Tool represent a clear business capability?
- Is its name unique and descriptive?
- Does its description explain what it does?
- Does the description explain when it should be used?
- Is its scope atomic enough?
- Are inputs clearly named?
- Are input types appropriate?
- Are input descriptions clear?
- Are required values validated?
- Are outputs structured?
- Is success explicit?
- Are failures explicit?
- Can the operation be safely retried?
- Could duplicate execution cause problems?
- Should the user confirm before execution?
- Which identity executes the Tool?
- What permissions does that identity have?
- Does the Tool follow least privilege?
- Could it create privilege escalation?
- Are DLP policies relevant?
- Is the Tool dynamically selected or explicitly invoked?
- Could its description overlap with another Tool?
- Does it expose unnecessary backend complexity?
- Is the Tool contract versioned?
- Can it move through DEV, TEST, and PROD?
- Is it monitored?
- Is it auditable?
- Who owns it?
- Which Agents depend on it?
- 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:
LanguageIntentContext
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: 14Remaining: 36Progress: 28%
We have now reached:
Knowledge Architecture │ ▼Knowledge → Retrieval → Grounding → AnswerConversation Architecture │ ▼Topics → Variables → Conditions → Power FxFocused AI │ ▼PromptsExecution 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.
