Tools
Understand the tools available for agents to use when processing emails.
Overview
Tools are capabilities that agents can use to interact with external systems and take actions. When an agent decides it needs to perform an action (like sending an email or searching for information), it calls a tool.
How Tools Work
Tool Calling Process
- Agent receives an email to process
- Agent analyzes the email and decides what actions to take
- Agent calls appropriate tools (e.g., search, reply)
- Tools execute and return results
- Agent uses results to complete the task
Tool Architecture
Agent
├── Receives email
├── Reasons about needed actions
├── Calls tools as needed
│ ├── knowledge_base.search → Results
│ ├── employees.search → Employee data
│ └── mailbox_messages.reply:me → Email sent
└── Completes execution
Built-in Tools
ExecAssist includes the following built-in tools:
Required Tools
complete
Mark execution as complete. Use this when the task has been finished or when no action is required for this email. This tool is automatically available to all agents and cannot be removed.
Parameters:
reason(required) - Brief explanation of why the execution is complete or why no action is needed
Use cases:
- Task has been completed successfully
- Informational emails that require no response
- Acknowledgments or confirmations
- Spam that passed filters
- Newsletters or automated notifications
Communication Tools
mailbox_messages.reply:me
Send an email response to the sender.
Parameters:
body- Email content (supports HTML)cc- Optional CC recipientsattachments- Optional file attachments
Use cases:
- Responding to customer inquiries
- Acknowledging receipt of messages
- Sending automated updates
mailbox_messages.reply_all:me
Send a reply to all recipients of the original email.
Parameters:
body- Email content (supports HTML)cc- Optional additional CC recipients
Use cases:
- Group discussions requiring all-party responses
- Team-wide acknowledgments
mailbox_messages.forward:me
Forward the email to another recipient.
Parameters:
to- Recipient email addressbody- Optional message to include with the forward
Use cases:
- Routing emails to appropriate team members
- Escalating to specialists
mailbox_messages.create_draft:me
Create a draft response without sending.
Parameters:
body- Email content for the draftcc- Optional CC recipients
Use cases:
- Creating responses for human review before sending
- Preparing complex responses
request_human_input
Request input, approval, or information from a human. The agent will pause and wait for a response.
Parameters:
message- Detailed message explaining what you need and why (required)subject- Brief subject line for the requestrecipient- Email address of the person to ask (required unless agent is an SME with a configured manager)request_type- Type of request:approval_required,clarification_needed,exception_request,compliance_concern,deadline_risk,resource_needed,information_request,otherurgency- Urgency level:low,normal,high,criticalrequired_by- When you need a response by (ISO 8601 datetime)context_for_resume- Note to yourself about what to do when you resume
Use cases:
- Getting approval for actions above agent authority
- Asking questions that require human judgment
- Multi-step workflows requiring external input
- Approval processes
messages.send:user
Send a notification to a user (via Teams, email, or SMS).
Parameters:
user_email- User to notifymessage- Notification contentchannel- Notification method (teams, email, sms)
Use cases:
- Alerting team members about urgent matters
- Sending status updates
messages.send:person (SMS channel)
Send an SMS message.
Parameters:
phone_number- Recipient phone numbermessage- SMS content (limited length)
Use cases:
- Urgent notifications
- Follow-up reminders
Email Management Tools
mailbox_messages.update:me, mailbox_messages.move:me, mailbox_folders.create:me, mailbox_rules.list/create/delete:me
Manage emails in the agent's own mailbox: assign categories, move to folders, create folders, mark as read/unread, move a message between the Outlook Focused and Other tabs, or manage durable per-sender Focused/Other rules. By default operates on the current email; supply message_ids to act on up to 20 specific emails in bulk.
set_focus is retroactive and per-message: it moves mail that has already arrived, and Outlook's own classifier learns nothing from it. The three *_sender_focus actions are the durable equivalent - they set a per-sender rule on the mailbox itself, so future mail from that sender arrives on the right tab even when no agent is running. Use set_focus to fix messages already in the inbox and set_sender_focus to stop the problem recurring.
Parameters:
action- Action to perform:assign_category,move_to_folder,create_folder,mark_read,mark_unread,set_focus,list_sender_focus,set_sender_focus,clear_sender_focuscategory- Category name (for assign_category). Common categories: "Spam", "Response Requested", "Urgent"folder- For move_to_folder, the destination: a well-known name ("inbox", "drafts", "sentitems", "deleteditems", "junkemail", "archive"), a folder's display name, a "Parent > Child" path, or a folder ID. For create_folder, the display name of the new folder.parent_folder- Optional parent for create_folder (well-known name, display name, "Parent > Child" path, or folder ID). Omit to create the folder at the top level.focus- Outlook Focused Inbox classification (for set_focus and set_sender_focus):focusedorother. Forset_focusthis is the per-messageinferenceClassificationproperty, not a folder, somove_to_foldercannot reach it.sender- Email address of the sender whose durable rule to set or clear (for set_sender_focus and clear_sender_focus). Matching is case-insensitive. Not used by list_sender_focus, which returns every rule on the mailbox.message_ids- Optional array of message IDs (max 20) to act on; if omitted, operates on the current email. Not used by create_folder or the three*_sender_focusactions, which act on the mailbox rather than on a message.complete_after_execution- If true, end agent execution after this action
Use cases:
- Categorizing emails for later review
- Moving spam to junk folder
- Organizing emails by topic
- Creating a folder structure (for example a "Chief of Staff" folder under "Management Company") and filing emails into it
- Promoting an important message from the Outlook Other tab to Focused
- Teaching the mailbox that a key contact's mail should always be Focused, so it stops landing in Other
- Reviewing which per-sender rules are already in place, and removing one that is no longer wanted
If the folder name cannot be resolved, the tool lists the folders that do exist instead of returning Microsoft Graph's "Id is malformed" error. A name that matches more than one folder is refused, so send the full "Parent > Child" path in that case.
mailbox_messages.get_thread:me
Retrieve the full email thread for context.
Parameters:
- None (uses current email context)
Use cases:
- Understanding conversation history
- Avoiding redundant responses
Information Retrieval Tools
knowledge_base.search
Search the tenant's corporate knowledge base for indexed content and return a synthesized answer with references.
Parameters:
query- What to search the knowledge base for
Use cases:
- Looking up product information
- Finding policy documentation
- Retrieving technical specifications
employees.search
Find employee information from the directory.
Parameters:
name- Employee name to searchemail- Employee email addressdepartment- Filter by department
Use cases:
- Finding the right person to contact
- Verifying employee information
- Looking up reporting structure
contacts.search
Search for contacts across the organization.
Parameters:
query- Search term (name, email, etc.)
Use cases:
- Finding contact information
- Identifying email senders
mailbox_messages.search:other, mailbox_messages.get:other, mailbox_folders.list:other
Search, read, and browse emails from any mailbox in the organization. Supports full-text KQL search, structured filters (sender, date, attachments), reading full message bodies, and listing folders. Access is controlled by per-agent mailbox scoping configuration.
Parameters:
operation(required) - The operation:search,read_message,list_foldersmailbox_address(required) - Email address of the mailbox to searchkeywords- KQL full-text search query (for search operation)from_address- Filter by sender email addressdate_after/date_before- Filter by date range (ISO date)has_attachments- Filter by attachment presencefolder_id- Scope search to a specific foldermax_results- Maximum results, 1-50 (default: 10)message_ids- Message IDs to read (for read_message operation, max 5)max_body_length- Maximum body length per message, 500-50,000 (default: 8,000)
Use cases:
- Looking up previous correspondence with a customer across team mailboxes
- Gathering context from other departments before responding
- Researching email history for investigation or audit tasks
- Executive assistants searching organizational mailboxes on demand
Note: This tool requires per-agent mailbox access configuration. See Search Mailbox Tool for setup instructions.
Subject Matter Expert (SME) Delegation
SME delegation is not a tool you assign from a list. When an agent is granted access to a Subject Matter Expert, a dedicated tool for that SME (named sme_<name>) is generated automatically and appears in the agent's own tool list, alongside its other assigned tools.
Use the generated tool to both request help and check on a pending request:
- Set
actiontoinvoke(the default) with atask_promptto ask the SME for help. - Set
actiontostatuswith theinvocation_idreturned by the invoke call to check on progress.
Use cases:
- Getting specialized expertise on a topic
- Routing complex inquiries to the right SME
- Following up on a pending expertise request
Calendar Tools
calendar_events.create
Schedule a meeting with attendees.
Parameters:
title- Event titleattendees- List of attendee emailsstart_time- Event start timeend_time- Event end timelocation- Optional locationdescription- Optional meeting description
Use cases:
- Booking meetings
- Scheduling follow-ups
- Coordinating with teams
Reminder Tools
scheduled_actions.create
Set a reminder or timeout to perform an action at a future time. Use this when you need to follow up on something later, wait for a response with a fallback, or check on a pending item.
Parameters:
reminder_type(required) - Type of reminder:timeout,reminder,follow_up, orchecktrigger_in_hours- Number of hours from now when reminder should trigger (alternative totrigger_at)trigger_at- Specific date/time when reminder should trigger in ISO format (alternative totrigger_in_hours)title(required) - Short title for the reminder (e.g., "Follow up on budget approval")description- Detailed description of what to do when reminder triggersaction_type(required) - What action to take:send_email,notify,escalate,check_response,execute_agent, orcontinue_executionaction_details- Details for the action (varies by action type)target_email- Email address of person this reminder is about (optional)related_email_id- ID of the email that triggered this reminder (optional)
Action Types:
| Action | Description |
|---|---|
send_email | Send an email to specified recipients (requires email_to, email_subject, email_body in action_details) |
notify | Create a notification in the system (requires notification_message in action_details) |
check_response | Check if a response was received in an email thread (requires check_thread_id, check_from in action_details) |
escalate | Escalate to human review |
execute_agent | Re-trigger an agent execution (requires agent_id in action_details) |
continue_execution | Resume a paused long-running task (used internally by checkpoint system) |
Use cases:
- Setting follow-up reminders for pending responses
- Creating timeout-based escalations ("if no response in 4 hours, escalate")
- Scheduling deadline reminders
- Automating check-ins at specific intervals
Example: "If Sarah doesn't respond to the budget approval request within 48 hours, send her a reminder email."
scheduled_actions.update
Cancel an existing reminder that is still pending.
Parameters:
reminder_id(required) - ID of the reminder to cancelreason- Reason for cancellation (optional but recommended for audit trail)
Use cases:
- Removing obsolete reminders when the issue has been resolved
- Cancelling follow-ups when a response is received early
- Cleaning up reminders that are no longer needed
Memory Tools
Memory tools enable agents to store and retrieve information across executions. See Agent Intelligence for detailed documentation.
organization_memory
Store, update, delete, or search organization-wide information that all agents can access. Global memories are automatically injected into agent prompts based on priority.
Parameters:
action- Action:create,update,delete,search,listkey- Memory key (descriptive identifier)value- Value to store (for create/update actions)category- Category:policy,guideline,fact,rule,temporarypriority- Priority level (1-100, higher = more prominent)query- Search query for memory content (for thesearchaction)
Use cases:
- Storing organizational policies
- Maintaining shared knowledge across agents
- Setting temporary guidelines (e.g., holiday policies)
- Retrieving stored policies or checking organizational guidelines
Note: Global Memories require the Workforce or Platform plan. See Global Memories for details.
person_memory
Store, update, delete, or list information about specific contacts. Personal memories are automatically retrieved when processing emails from that contact.
Parameters:
action- Action:create,update,delete,listcontact_email- Email address of the contactkey- Memory key (descriptive identifier)value- Value to store (for create/update actions)category- Category:preference,project,personal,history,otherimportance- Importance:low,normal,high,critical
Use cases:
- Remembering customer communication preferences
- Tracking ongoing projects per contact
- Storing relevant personal details for personalization
See Personal Memories for detailed usage guidelines.
Artifact Tools
Artifact tools enable agents to store and reuse large outputs like reports, analyses, and datasets. See Artifacts for detailed documentation.
artifacts.create
Store agent findings as a reusable artifact that can be retrieved later by other agents. Artifacts are automatically deduplicated using content hashing.
Parameters:
artifact_type- Type:report,analysis,dataset,document,datatitle- Short, descriptive titlesummary- Brief summary of contents (optional)content- Full artifact contentcontent_format- Format:text,markdown,json,htmltags- Comma-separated tags for categorizationcategory- Domain category (e.g., "marketing", "finance")is_reusable- Allow other agents to access (default: true)valid_for_days- Custom validity period
Use cases:
- Caching expensive research for reuse
- Storing generated reports
- Sharing analysis across agents
artifacts.get
Retrieve the full content of a stored artifact by its ID.
Parameters:
artifact_id- UUID of the artifact to retrieveinclude_content- Include full content (default: true)
Use cases:
- Accessing previously generated reports
- Retrieving cached research
- Referencing saved analysis
artifacts.search
Search for existing artifacts that might be relevant to the current task. Always search before performing expensive research to avoid redundant work.
Parameters:
artifact_type- Filter by type (optional)category- Filter by domain category (optional)tags- Filter by tags, comma-separated (optional)search_text- Search in title and summarylimit- Maximum results (default: 20, max: 100)
Use cases:
- Finding existing research before repeating work
- Discovering relevant reports
- Locating cached data
Activity Search Tool
executions
Search and retrieve information about past agent activity, via the search and get actions. This tool requires Activity Search to be enabled. It allows agents to search their own execution history, enabling self-reflection and learning from past interactions.
Parameters:
query- Natural language search query (e.g., "What happened with Acme Corp?")execution_id- Specific execution ID to retrieve full detailstime_range- Time period filter with either preset or custom dates:preset- Predefined range:today,yesterday,last_7_days,last_30_days,this_month,last_monthstart_date/end_date- Custom date range (YYYY-MM-DD format)
filters- Optional filters:include_all_agents- Include activity from all agents (default: false, own activity only)source_type- Filter by source:agents,scans,caioo,integrationsstatus- Filter by status:completed,error,escalatedtopics- Filter by topic tags
output_format- How to format results:list(default),summary,detaillimit- Maximum results (1-50, default: 10)
Operating Modes:
| Mode | Trigger | Returns |
|---|---|---|
| Semantic Search | query provided | List of matching executions with summaries and relevance scores |
| Execution Detail | execution_id provided | Full details for a specific execution |
| Summary | output_format: "summary" | Natural language summary with aggregated statistics |
Access Control:
| Agent Type | Default Scope |
|---|---|
| Regular Agent | Own executions only |
| AICOS | All tenant executions |
Regular agents can set include_all_agents: true to search across all tenant executions when needed for coordination.
Use cases:
- Remembering previous interactions with a contact
- Finding related past work before processing a new request
- Explaining why certain actions were taken
- Providing context about recent activity
- AICOS gathering intelligence for daily reports
Example:
Agent receives: "What did you do with my email from John at Acme?"
Agent calls: executions.search(query: "John Acme email", time_range: {preset: "last_7_days"})
Agent responds with summary of matching past executions
Note: This tool requires Activity Search to be enabled. See Activity Search for setup instructions.
Knowledge Indexing Tools
knowledge_base.create
Index valuable knowledge into the Corporate Knowledge Index. This tool allows agents to preserve insights, research findings, and synthesized information for future retrieval by other agents.
Parameters:
content(required) - The knowledge content to index (minimum 10 characters, maximum 100 KB)title- Title for the document (auto-generated from content if omitted)summary- Brief summary of the contentsource- Where the knowledge came from (defaults to agent name)documentType- Type:research,meeting_notes,decision,procedure,reference,othertopicId- Topic ID from taxonomy (auto-classified if omitted)topicName- Topic name (auto-classified if omitted)keywords- Array of keywords for search optimization (max 10, auto-extracted if omitted)valueScore- Importance score from 0.0 to 1.0 (default: 0.8)relatedDocumentIds- Array of related document IDs (max 10)
Outcomes:
| Outcome | Description |
|---|---|
indexed | Successfully added to the knowledge base |
duplicate | Content already exists (blocked by hash check) |
quota_exceeded | Rate limit reached (hourly, daily, or total) |
error | Indexing failed due to an error |
Use cases:
- Preserving research findings from SME consultations
- Storing meeting summaries extracted from email threads
- Recording decisions and their rationale
- Indexing valuable content discovered during email processing
Example:
Agent finds valuable policy clarification in an email thread.
Agent calls: knowledge_base.create(
content: "Our return policy allows...",
title: "Return Policy Clarification - January 2026",
documentType: "procedure",
source: "Email from Legal Team"
)
Knowledge is now searchable by all authorized agents.
Note: This tool requires the Index Knowledge Tool to be enabled. See Index Knowledge Tool for setup instructions.
knowledge_sources
Programmatically create knowledge sources, configure email mining parameters, and trigger email scans. This tool allows agents to autonomously build searchable knowledge bases from email archives.
Parameters:
action(required) - The action to perform:create,update,scan(also used to check a scan's progress),list(also returns the mining quota)mailboxAddress- Email address of the mailbox to mine (required forcreate)sourceId- ID of existing knowledge source (required forupdateandscan)scanRequestId- ID of a scan request (to check status viascan)sourceName- Optional friendly name for the knowledge sourcefolderPath- Specific folder path to scan (e.g., 'Inbox/Projects')topicFilters- Topic taxonomy IDs to filter for (array)includeKeywords- Keywords that must appear in emails (array)excludeKeywords- Keywords to exclude (array)minValueThreshold- Minimum value score for indexing (0.5-1.0, default: 0.7)scanStartDate- Only scan emails after this date (YYYY-MM-DD)maxEmails- Maximum emails to process (1-1000)notifyOnComplete- Receive notification when scan completes (default: true)
Use cases:
- Building targeted knowledge bases when agents identify information gaps
- Mining mailboxes for domain-specific knowledge to answer queries
- Setting up knowledge sources for new team members or projects
- Proactively expanding organizational knowledge during research tasks
Example:
Agent discovers need for historical client communications.
Agent calls: knowledge_sources(
action: "create",
mailboxAddress: "sales@company.com",
sourceName: "Sales Team - Acme Corp",
includeKeywords: ["acme", "acme corp"],
minValueThreshold: 0.7
)
Agent triggers scan and waits for notification when complete.
Note: This tool requires the Mine Mailbox Tool to be enabled. See Mine Mailbox Tool for setup instructions.
Dynamic Tools
Some tools are created dynamically based on your configuration:
RAG Retriever Tools
When you create and provision a RAG Retriever, it automatically becomes available as a tool for agents. Each active retriever generates a tool with the name pattern rag_retriever_N.
Parameters:
query(required) - Search query to find relevant information
Returns:
answer- AI-synthesized answer from the knowledge basereferences- Source documents used to generate the answerresultCount- Number of relevant references found
Use cases:
- Answering questions from company documentation
- Finding relevant email history
- Retrieving policy and procedure information
Example: If you create a "Product Documentation" RAG retriever, a tool becomes available that agents can use to search product docs.
Search Index Tools (Legacy)
When you configure legacy search indexes, corresponding search tools are automatically created. Each index becomes a searchable tool.
Example: If you create a "Product Documentation" search index, a tool called search_product_documentation becomes available.
Note: For new implementations, we recommend using RAG Retrievers instead of legacy search indexes.
SQL Query Tools
Database query tools allow agents to execute secure, parameterized SQL queries against Azure SQL Server databases. Create connections to your databases and define query tools through a guided wizard.
Tool Creation:
- Navigate to Capabilities > Connections > SQL Tools
- Create a database connection with credentials
- Use the wizard to create query tools with parameters
- Test queries before deployment
- Assign tools to agents
Tool Types:
| Type | Description |
|---|---|
| SELECT queries | Retrieve data from database tables |
| INSERT/UPDATE/DELETE | Modify data (requires write permissions enabled) |
| Stored procedures | Execute stored procedures with parameters |
Parameters:
- Query parameters use
@paramNamesyntax - Parameters are typed (INT, VARCHAR, DATETIME, etc.)
- Validation rules can constrain input values
- All queries are parameterized to prevent SQL injection
Use cases:
- Looking up customer information by email or ID
- Checking order status and shipping details
- Retrieving inventory levels and product data
- Updating customer contact information (with confirmation)
- Running business reports and statistics
Security:
- All credentials encrypted at rest using AES-256-CBC
- Write operations can require confirmation
- Row limits prevent excessive data retrieval
- Complete audit trail of all query executions
See SQL Query Tools for the complete setup guide.
QuickBooks Query Tools
Tools for querying QuickBooks Online accounting data. When you connect a QuickBooks account via OAuth, a default query tool is automatically created. You can create additional specialized tools for specific use cases.
Tool Creation:
- Navigate to Capabilities > Connections > QuickBooks
- Connect your QuickBooks account via OAuth
- A default query tool is automatically created
- Optionally create specialized tools in the Tools tab
Tool Types:
| Type | Description |
|---|---|
query_all | General purpose query tool (default, includes reports) |
query_customers | List and search customers |
query_vendors | List and search vendors |
query_invoices | Query invoices with filters |
query_bills | Query bills and payment status |
query_payments | Query customer and vendor payments |
query_reports | Run financial reports (agent selects type) |
report_balance_sheet | Balance Sheet for a date range |
report_profit_and_loss | Profit & Loss for a date range |
report_cash_flow | Cash Flow Statement for a date range |
update_customer_contact | Update customer contact info (write) |
update_vendor_contact | Update vendor contact info (write) |
Parameters:
operation(required) - The query operation to performentityId- Entity ID for get/update operationsfilters- Filter criteria for list operationsstartDate/endDate- Date range for report operations (YYYY-MM-DD)accountingMethod- Cash or Accrual (optional, for reports)maxResults- Maximum results to return (default: 100)
Use cases:
- Answering questions about customer balances and invoices
- Looking up vendor payment history and outstanding bills
- Verifying contract compliance through payment patterns
- Generating Balance Sheet, Profit & Loss, and Cash Flow reports
- Updating customer and vendor contact information (with approval)
Security:
- Read-only by default; write operations require explicit enablement
- Optional approval workflow for write operations
- Complete audit trail of all queries
- Configurable rate limits per connection
See QuickBooks Tools for the complete setup guide.
HTTP API Tools
Tools created from HTTP API integrations let agents interact with external REST APIs. These tools are configured using an AI-powered wizard that analyzes your API specification and automatically generates tool configurations.
Use cases:
- CRM integrations (HubSpot)
- Ticketing systems (Zendesk, ServiceNow)
- Internal company APIs
- Third-party data services
See HTTP API Tools for the complete setup guide.
LinkedIn Tools
Tools for LinkedIn automation, allowing agents to manage your company page or an employee's own profile. Connecting LinkedIn (see LinkedIn Integration) gives agents three tools; Outermind connects through its own LinkedIn app, so there is nothing to register with LinkedIn.
linkedin_posts
Posts on the connected page or profile.
Actions:
list- Read the posts this connection has published, newest firstget- Read one post with its comments and reactions (postUrn)create- Publish a post: text (body), an article share (articleUrl), a reshare (reshareOf), or a poll (poll, company pages only). Optionalvisibility,mentions, and one image (imageUrl,imageBase64orassetId)update- Rewrite the text of a published post (postUrn,body)delete- Remove a published post (postUrn)react/unreact- Add or take back this connection's reaction (postUrn,reactionType:LIKE,CELEBRATE,SUPPORT,LOVE,INSIGHTFUL,FUNNY). Removing a reaction works on company pages only
linkedin_comments
Comments under the connection's posts.
Actions:
list- Read the comments under one post (postUrn), or sweep recent posts for unanswered comments (company pages only)create- Comment under a post, or reply under a comment (postUrn,body, optionalparentCommentUrn)delete- Remove a comment this connection posted (postUrn,commentUrn; company pages only)
linkedin_analytics
Actions:
get- Read one report, chosen bymetric:followers,pageandsharesfor a company page,profilefor a personal profile, oractivity_historyfor what this workspace has published through LinkedIn
Viewing Tools
Navigate to Tools
Go to Capabilities > Tool Management > All Tools to see all available tools.
Tool List
The tools page shows all built-in tools organized by availability:
- Available tools appear first
- Upgrade required tools appear at the bottom (these require a higher subscription tier)
Tool Information
Click on any tool to view its details in a read-only modal. For each tool, you can see:
- Name - Tool identifier
- Description - What the tool does
- Parameters - Required and optional inputs
- Category - Tool type (communication, search, etc.)
Note: Built-in tools are read-only and cannot be modified. They are managed at the system level.
Assigning Tools to Agents
During Agent Creation
- Go to Workforce > Agents > Agents & SMEs
- Click Add Agent or edit existing
- In the Tools section, select desired tools
- Click Save
Note: The
completetool is automatically available to all agents and cannot be removed. This ensures agents always have a way to mark execution as complete.
Tool Recommendations
Consider the agent's purpose:
| Agent Type | Recommended Tools |
|---|---|
| Customer Support | mailbox_messages.reply:me, knowledge_base.search, mailbox_messages.search:other, request_human_input, mailbox_messages.update:me, executions |
| Scheduling Assistant | calendar_events.create, employees.search, mailbox_messages.reply:me |
| Information Bot | knowledge_base.search, employees.search, mailbox_messages.reply:me, executions |
| Triage Agent | request_human_input, mailbox_messages.update:me, mailbox_messages.forward:me |
| Research Agent | knowledge_base.search, mailbox_messages.search:other, artifacts.create, executions |
| Executive Agent (AICOS) | executions, mailbox_messages.search:other, organization_memory, artifacts.create |
| Financial Analyst | quickbooks_records.query, knowledge_base.search, mailbox_messages.reply:me, artifacts.create |
Note: SME delegation isn't picked from this list. If an agent should be able to delegate to a Subject Matter Expert, grant it access to that SME; a matching
sme_<name>tool is generated automatically and appears in the agent's tool list.
Security Considerations
- Only assign tools the agent actually needs
- Be cautious with tools that send external communications
- Review tool permissions for sensitive data access
- Audit tool usage in execution logs
Microsoft 365 Tools Requiring Authorization
Some tools reach Microsoft Graph or Exchange on your organization's behalf (SharePoint, Teams, meeting transcripts, mailbox automation, and similar). Each of these tools needs a specific Microsoft Entra application to be authorized for your tenant before it can run.
If the required application has not been authorized yet, the tool still appears in the tool list (it is never hidden), but it is shown disabled, with a badge naming the application it needs and a link to authorize it. This lets you see everything a group of tools could do even before you've connected Microsoft 365 for that capability.
- You cannot assign a disabled tool to an agent until the badged application is authorized.
- Authorizing the application (via Console > Microsoft 365 Access, or the authorize link on the badge) immediately unlocks every tool that depends on it, with no separate per-tool step.
- Revoking an application's authorization does the reverse: tools that depend on it stop working. A tool that was already assigned to an agent is not silently removed from that agent's configuration: it stays listed, but shows as unavailable and fails closed (with an error naming the application) if the agent tries to use it, until the application is re-authorized.
See Your User Profile for the Microsoft 365 Access tab, and Agent 365 Enablement for background on the underlying application model.
Tool Execution Tracking
Viewing Tool Calls
In Governance > Activity History > Agent Runs, click on any execution to see:
- Which tools were called
- Parameters passed to each tool
- Results returned
- Timing information
Common Patterns
Search then respond:
1. knowledge_base.search("product warranty policy")
2. mailbox_messages.reply:me(body: [response using search results])
Categorize and ignore:
1. mailbox_messages.update:me(category: "Spam")
2. complete(reason: "Spam email categorized")
Request human input with context:
1. mailbox_messages.get_thread:me()
2. request_human_input(urgency: "high", message: "Complex issue requiring your judgment", context_for_resume: "If approved, proceed with resolution")
Best Practices
Tool Selection
- Minimum necessary - Only assign tools the agent needs
- Match purpose - Tools should align with agent's role
- Test combinations - Verify tools work well together
- Document expectations - Instructions should guide tool use
Prompt Engineering for Tools
Help agents use tools effectively:
When responding to customer inquiries:
1. First search the knowledge base for relevant information
2. Use search results to inform your response
3. If you cannot find an answer, escalate to human support
4. Always reply to the customer, even if escalating
For spam or irrelevant emails:
1. Categorize appropriately using mailbox_messages.update:me
2. Use complete with a clear reason
Monitoring Tool Usage
- Review tool call patterns in executions
- Identify unnecessary tool calls
- Optimize instructions to reduce wasted calls
- Track tool errors and failures
Troubleshooting
Tool Not Available
Symptoms: Agent cannot call a tool, tool missing from list
Solutions:
- Verify the tool is assigned to the agent
- Check if the underlying service is configured (e.g., search index exists)
- Ensure required permissions are in place
Tool Disabled with an Authorization Badge
Symptoms: A tool appears in the list but is greyed out with a badge naming a Microsoft application, and cannot be assigned to an agent
Solutions:
- Go to Console > Microsoft 365 Access and authorize the application named on the badge
- Once authorized, the tool re-enables automatically; no separate per-tool action is needed
- If a tool that was previously assigned now shows unavailable, the application's authorization was likely revoked; re-authorize it to restore the tool
Tool Calls Failing
Symptoms: Tool returns errors, execution fails at tool call
Solutions:
- Check tool parameters in execution details
- Verify external services are available
- Review authentication/permissions
- Check for rate limiting
Unexpected Tool Behavior
Symptoms: Tool returns wrong results, behaves unexpectedly
Solutions:
- Review the parameters being passed
- Check if tool configuration changed
- Test the tool manually
- Update agent instructions for clearer guidance
Related Topics
- Agents
- HTTP API Tools
- QuickBooks Tools
- SQL Query Tools
- Tool: pdf_documents - convert Office documents or inline markdown to PDF
- Search Tools
- Agent Runs
- Activity Search
- Agent Intelligence
- Index Knowledge Tool
- Mine Mailbox Tool
- Search Mailbox Tool