Microsoft 365 Core MCP Server
Supports containerized deployment via Docker with HTTP transport on port 8081
Uses Express.js to provide HTTP transport for MCP communication with CORS support and health/capabilities endpoints
Provides comprehensive Intune device management for macOS including device inventory, policy configuration, application deployment, and compliance monitoring
Distributed and installed via npm package manager
Implemented in TypeScript with Zod schema validation for runtime type checking and input validation
Uses Zod for schema validation, runtime type checking, and automatic documentation of input schemas
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Microsoft 365 Core MCP Serverlist my recent Teams meetings"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Latest Enhancements (January 2026)
New Identity & Security Tools:
backup_policies- Export Microsoft 365 policies to JSON for backup, disaster recovery, and migrationConditional Access Policies, Named Locations, Authentication Strengths
Intune Device Compliance & Configuration Policies
App Protection Policies, Sensitivity Labels
Full JSON backup with metadata and tenant information
manage_named_locations- Manage Conditional Access named locationsIP address ranges (CIDR notation) with trust settings
Country/region-based locations (ISO 3166-1 alpha-2 codes)
Create, update, delete, and list operations
manage_authentication_strengths- View authentication strength policiesBuilt-in and custom MFA strength policies
Available authentication method combinations
Authentication method configurations
manage_cross_tenant_access- Manage B2B collaboration settingsDefault and partner-specific access policies
Inbound trust settings (MFA, compliant devices, hybrid joined)
B2B collaboration inbound/outbound controls
manage_identity_protection- Monitor identity risksRisk detections and risky users
Dismiss or confirm compromised users
Filter by risk level and state
MCP SDK & Smithery Best Practices Update:
Upgraded to Zod v4 for schema validation (required by @smithery/sdk@3.0.1)
Added OAuth 2.0 authentication infrastructure with Azure AD/Microsoft Entra ID integration
Implemented DNS rebinding protection for HTTP transport security
Added Smithery SDK integration with proper module exports and configuration
Authentication Improvements:
New
src/auth/module with OAuth provider and middlewareBearer token extraction and validation
Support for both OAuth and API key authentication
Token caching and automatic refresh
OAuth endpoints (
/oauth/authorize,/oauth/callback,/oauth/token)
Build & Deployment Fixes:
Fixed TypeScript compilation errors for Smithery deployment
Added type declarations for
csv-writer,xlsx,handlebarsmodulesExcluded broken/backup files from TypeScript compilation
Updated
@types/expressto v5.0.0 for Express v5 compatibilityFixed host header validation for production deployments
Configuration Updates:
Added
smithery.config.jsfor esbuild configurationUpdated
smithery.yamlwith OAuth config sectionAdded
modulefield topackage.jsonfor Smithery compatibilityUpdated dependencies:
@smithery/sdk@^3.0.1,@smithery/cli@^1.6.7
Related MCP server: ForIT Microsoft Graph
Previous Enhancements (December 2024)
Comprehensive Microsoft 365 Policy Management Expansion:
Added 10 new policy management tools covering all major Microsoft 365 products and services
30+ policy types supported across security, compliance, governance, and productivity
Full lifecycle management with create, read, update, delete, enable/disable operations
Enterprise-ready features including policy assignment, targeting, and multi-location support
New Policy Management Tools:
manage_retention_policies- Data retention across SharePoint, Exchange, Teams, OneDrivemanage_sensitivity_labels- Information protection with encryption and content markingmanage_information_protection_policies- Label policies and organization-wide settingsmanage_conditional_access_policies- Identity and access security with MFA, device compliancemanage_defender_policies- Advanced threat protection (Safe Attachments, Safe Links, Anti-Phishing)manage_teams_policies- Teams governance (messaging, meetings, calling, apps)manage_exchange_policies- Email security (OWA, ActiveSync, address book policies)manage_sharepoint_governance_policies- Content and sharing governancemanage_security_alert_policies- Security event monitoring and automated responses
Policy Types Covered:
Security: Conditional Access, Defender for Office 365 (Safe Attachments/Links, Anti-Phishing/Malware/Spam)
Compliance: DLP, Retention Policies, Sensitivity Labels, Information Protection
Governance: SharePoint Sharing/Access Policies, Information Barriers, Retention Labels
Productivity: Teams (Messaging/Meeting/Calling/App Setup), Exchange (OWA/ActiveSync/Address Book)
Monitoring: Security and Compliance Alert Policies with automated notifications
Key Features:
Granular control with complex conditions and rules
Multi-location and multi-target support
Policy assignment to users, groups, and roles
Enable/disable functionality for testing
Comprehensive validation with Zod schemas
Type-safe implementations with full TypeScript support
For complete documentation, examples, and best practices, see:
Previous Enhancements (September 25, 2025)
Universal Microsoft Graph API Framework - Complete Transformation:
Transformed from specialized tool to universal Graph API gateway with access to 1000+ Microsoft Graph endpoints
Dynamic Tool Generation System: Automatically discovers and creates tools for all Graph API endpoints at runtime
Advanced Graph API Features: Batch operations, delta queries, webhook subscriptions, and advanced search
Comprehensive Service Coverage: Teams, OneNote, Planner, To Do, Bookings, Security, Analytics, and more
Enhanced Authentication: Multi-scope token caching with automatic scope detection for all Graph categories
Real-time Capabilities: Webhook subscriptions for live change notifications across all Microsoft 365 services
New Advanced Graph API Tools:
execute_graph_batch- Execute up to 20 Graph requests in a single high-performance batch operationexecute_delta_query- Efficiently track changes to any Graph resource using delta queriesmanage_graph_subscriptions- Create, update, delete, and list webhook subscriptions for real-time notificationsexecute_graph_search- Advanced search across Microsoft 365 content with aggregations and filtering
Dynamic Category Tools (Generated at Runtime):
manage_teams_resources- Complete Microsoft Teams management (teams, channels, messages, meetings, chat)manage_productivity_resources- OneNote notebooks/pages, Planner plans/tasks, To Do lists, Bookings appointmentsmanage_security_resources- Security incidents, threat intelligence, advanced alerts, Defender integrationmanage_analytics_resources- Usage reports, activity insights, trending documents, user analytics
Enhanced Windows Device Management:
manage_intune_windows_devices- Complete Windows device lifecycle management in Intunemanage_intune_windows_policies- Windows configuration and compliance policy managementmanage_intune_windows_apps- Windows application deployment and managementmanage_intune_windows_compliance- Windows device compliance assessment and reporting
Technical Architecture Improvements:
GraphMetadataService: Auto-discovers Graph endpoints and generates schemas dynamically
DynamicToolGenerator: Creates tools at runtime based on Graph API metadata
GraphAdvancedFeatures: Implements batch operations, webhooks, delta queries, and search
Enhanced Error Handling: Intelligent troubleshooting with Graph-specific error interpretation
Performance Optimizations: Token caching, batch operations, pagination, and retry logic
Smithery Integration: All 40+ tools properly configured for Smithery discovery
Scope Coverage Expansion:
Microsoft Teams: Team.ReadBasic.All, Channel.Create, ChannelMessage.Send, OnlineMeetings.ReadWrite
Productivity Apps: Notes.ReadWrite, Tasks.ReadWrite, Bookings.ReadWrite.All
Advanced Security: SecurityIncident.ReadWrite.All, ThreatIntelligence.Read.All
Analytics & Reports: Reports.Read.All, Sites.Read.All for insights and trending data
Power Platform: Power BI API integration for datasets, reports, and dashboards
This transformation makes the M365 MCP server the definitive solution for Microsoft 365 automation, providing unprecedented access to the entire Microsoft Graph API ecosystem with advanced features and optimal performance.
Previous HTTP Transport Migration (September 25, 2025):
Migrated M365 Core MCP Server from STDIO to HTTP transport
Added Express.js HTTP server with
/mcpendpointImplemented CORS configuration for browser compatibility
Added configuration parsing from HTTP requests (Smithery integration)
Updated Dockerfile for HTTP container deployment (port 8081)
Updated smithery.yaml to use container runtime with HTTP transport
Added HTTP development and testing scripts
Created comprehensive HTTP transport test suite
Maintained backward compatibility with STDIO transport
Added support for both stateless and stateful HTTP modes
Added health and capabilities endpoints for monitoring
Previous Enhancements (June 16, 2025)
Extended Resources and Prompts (40 Resources + 5 Comprehensive Prompts):
Added 40 additional Microsoft 365 resources covering security, compliance, device management, and collaboration
Implemented 5 intelligent prompts for automated analysis and recommendations:
Security Assessment: Comprehensive security posture analysis with recommendations
Compliance Review: Framework-specific compliance gap analysis (SOC2, ISO27001, NIST, GDPR, HIPAA)
User Access Review: Individual and organization-wide access rights analysis
Device Compliance Analysis: Intune device management and compliance assessment
Collaboration Governance: Teams and SharePoint governance analysis
Enhanced resource coverage includes:
Security alerts, incidents, and conditional access policies
Intune device management, apps, and compliance policies
Extended user, group, and team information
Information protection and DLP policies
Audit logs and privileged access data
For detailed information about all new resources and prompts, see EXTENDED_FEATURES.md.
Recent Enhancements (June 7, 2025)
TypeScript Error Resolution & Compliance Module Enhancements:
Resolved all TypeScript errors in
src/server.tsandsrc/handlers/compliance-handler.tsrelated to incorrect tool registration syntax and type mismatches.Enhanced the compliance module to include comprehensive support for CIS (Center for Internet Security) controls.
Updated
ComplianceFrameworkArgsto recognize 'cis' as a valid framework.Corrected parameter parsing in compliance handler functions to properly handle string-to-number conversions for implementation groups.
Conditional Access Policy Review & Reporting:
Implemented functionality to retrieve and review Microsoft Entra Conditional Access policies.
Recent Enhancements (May 3, 2025)
MCP and HTTP Streaming Updates:
Updated MCP SDK to version 1.12.0
Enhanced HTTP streaming support with both stateful and stateless modes
Added environment variables for configuring HTTP transport options
Previous Enhancements (April 4, 2025)
Added several new tools to expand Microsoft Entra ID management and Security & Compliance capabilities:
Entra ID Management:
manage_azuread_roles: Manage Entra ID directory roles and assignments.manage_azuread_apps: Manage Entra ID application registrations (list, view, owners).manage_azuread_devices: Manage Entra ID device objects (list, view, enable/disable/delete).manage_service_principals: Manage Entra ID Service Principals (list, view, owners).
Generic API Access:
dynamicendpoints m365 assistant: Call arbitrary Microsoft Graph (including Entra APIs) or Azure Resource Management API endpoints.
Security & Compliance:
search_audit_log: Search the Entra ID Unified Audit Log.manage_alerts: List and view security alerts from Microsoft security products.
Note: Ensure the associated Entra ID App Registration has the necessary Graph API permissions and Azure RBAC roles for these tools to function correctly.
Microsoft 365 Core MCP Server
An MCP server that provides tools for managing Microsoft 365 core services including:
Distribution Lists
Security Groups
Microsoft 365 Groups
Exchange Settings
User Management
Offboarding Processes
SharePoint Sites and Lists
Features
Core Microsoft 365 Management
Distribution Lists: Create, delete, manage membership and settings
Security Groups: Full lifecycle management with mail-enabled options
Microsoft 365 Groups: Create, configure, and manage owners/members
Exchange Settings: Mailbox, transport, organization, and retention policies
User Management: Get and update user settings and configurations
Offboarding Processes: Automated user offboarding with configurable options
SharePoint Management
Site Management: Create, update, delete sites with template support
List Management: Create, configure, and manage SharePoint lists
Item Management: Add, update, and retrieve list items
Permissions: Manage site users and permissions
Settings: Configure site-level and organization settings
Azure AD Management
Role Management: Assign and manage directory roles and role assignments
Application Management: Manage app registrations, owners, and settings
Device Management: Enable, disable, delete Azure AD devices
Service Principals: Manage service principal objects and ownership
Security & Compliance
Audit Logging: Search and analyze Microsoft 365 Unified Audit Log
Security Alerts: List, view, and manage security alerts across Microsoft products
Data Loss Prevention: Create, configure, and manage DLP policies and incidents
Sensitivity Labels: Manage Microsoft Purview sensitivity labels and policies
Compliance Frameworks: Support for HITRUST, ISO27001, SOC2, CIS Controls
Assessment & Monitoring: Automated compliance assessments and continuous monitoring
Evidence Collection: Automated evidence gathering for compliance audits
Gap Analysis: Cross-framework compliance gap analysis and remediation planning
Intune Device Management (macOS Focus)
Device Inventory: List, filter, and manage macOS devices in Intune
Policy Management: Create, deploy, and monitor macOS configuration policies
Application Management: Deploy and manage macOS applications via Intune
Compliance Monitoring: Track and enforce macOS device compliance policies
Advanced Features
Dynamic API Access: Call arbitrary Microsoft Graph and Azure Resource Management APIs
Real-time Capabilities: Server-sent events, progress reporting, streaming responses
Intelligent Prompts: 5 comprehensive analysis prompts for security, compliance, and governance
Extended Resources: 44 resources covering security, compliance, device management, and collaboration
Modern MCP Features: Enhanced error handling, response validation, lazy loading
Setup
Installing via Smithery
To install Microsoft 365 Core Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @DynamicEndpoints/m365-core-mcp --client claudeInstalling Manually
Clone the repository
Install dependencies:
npm installCreate a
.envfile based on.env.example:MS_TENANT_ID=your-tenant-id MS_CLIENT_ID=your-client-id MS_CLIENT_SECRET=your-client-secret # Optional Configuration # LOG_LEVEL=info # debug, info, warn, error # PORT=3000 # Port for HTTP server if needed # USE_HTTP=true # Set to 'true' to use HTTP transport instead of stdio # STATELESS=false # Set to 'true' to use stateless HTTP mode (no session management)Register an application in Azure AD:
Required Microsoft Graph permissions:
Directory.ReadWrite.All
Group.ReadWrite.All
User.ReadWrite.All
Mail.ReadWrite
MailboxSettings.ReadWrite
Organization.ReadWrite.All
Sites.ReadWrite.All
Sites.Manage.All
SecurityEvents.ReadWrite.All
SecurityActions.ReadWrite.All
Device.ReadWrite.All
DeviceManagementConfiguration.ReadWrite.All
DeviceManagementManagedDevices.ReadWrite.All
DeviceManagementApps.ReadWrite.All
InformationProtectionPolicy.ReadWrite.All
Policy.ReadWrite.ConditionalAccess
RoleManagement.ReadWrite.Directory
AuditLog.Read.All
Reports.Read.All
ThreatIndicators.ReadWrite.OwnedBy
IdentityRiskyUser.ReadWrite.All
IdentityRiskEvent.Read.All
Required Azure RBAC roles (for Azure Resource Management):
Security Admin (for security-related operations)
Compliance Administrator (for compliance management)
Intune Administrator (for device management)
Reports Reader (for audit and reporting functions)
Build the server:
npm run buildStart the server:
npm start
Transport Options
The server supports multiple transport options for MCP communication:
stdio Transport
By default, the server uses stdio transport, which is ideal for:
Command-line tools and direct integrations
Local development and testing
Integration with Smithery and other MCP clients that support stdio
HTTP Transport
The server also supports HTTP transport with two modes:
Stateful Mode (With Session Management)
This is the default HTTP mode when USE_HTTP=true and STATELESS=false:
Maintains session state between requests
Supports server-to-client notifications via GET requests
Handles session termination via DELETE requests
Ideal for long-running sessions and interactive applications
Provides better performance for multiple requests in the same session
Stateless Mode
Enable this mode by setting USE_HTTP=true and STATELESS=true:
Creates a new server instance for each request
No session state is maintained between requests
Only supports POST requests (GET and DELETE are not supported)
Ideal for RESTful scenarios where each request is independent
Better for horizontally scaled deployments without shared session state
Simpler API wrappers where session management isn't needed
To configure the transport options, set the appropriate environment variables in your .env file:
USE_HTTP=true # Use HTTP transport instead of stdio
STATELESS=false # Use stateful mode with session management (default)
PORT=3000 # Port for the HTTP serverUsage
The server provides MCP tools and resources that can be used to manage various aspects of Microsoft 365. Each tool accepts specific parameters and returns structured responses.
Tools
The server provides 29 comprehensive tools for Microsoft 365 management:
Core Management Tools
manage_distribution_lists- Create, delete, and manage distribution lists and membershipmanage_security_groups- Create, delete, and manage security groups and membershipmanage_m365_groups- Create, delete, and manage Microsoft 365 groups and membershipmanage_exchange_settings- Configure mailbox, transport, organization, and retention settingsmanage_user_settings- Get and update user settings and configurationsmanage_offboarding- Automated user offboarding processes with configurable options
SharePoint Management Tools
manage_sharepoint_sites- Create, update, delete SharePoint sites and manage usersmanage_sharepoint_lists- Create, update, delete SharePoint lists and manage items
Azure AD Management Tools
manage_azuread_roles- Manage Azure AD directory roles and role assignmentsmanage_azuread_apps- Manage Azure AD application registrations and ownersmanage_azuread_devices- Manage Azure AD device objects (enable, disable, delete)manage_service_principals- Manage Azure AD Service Principals and ownership
Security & Compliance Tools
search_audit_log- Search the Microsoft 365 Unified Audit Logmanage_alerts- List and view security alerts from Microsoft security productsmanage_dlp_policies- Manage Data Loss Prevention policies and configurationsmanage_dlp_incidents- Handle DLP policy violations and incident managementmanage_sensitivity_labels- Manage Microsoft Purview sensitivity labels
Intune Device Management Tools
manage_intune_macos_devices- Manage Intune macOS devices and enrollmentmanage_intune_macos_policies- Configure and deploy macOS device policiesmanage_intune_macos_apps- Deploy and manage macOS applications via Intunemanage_intune_macos_compliance- Monitor and enforce macOS device compliance
Compliance Framework Tools
manage_compliance_frameworks- Configure compliance frameworks (HITRUST, ISO27001, SOC2)manage_compliance_assessments- Run and manage compliance assessmentsmanage_compliance_monitoring- Monitor compliance status and configure alertsmanage_evidence_collection- Collect and manage compliance evidencemanage_gap_analysis- Perform compliance gap analysis and remediation planningmanage_cis_compliance- Manage CIS Controls compliance and benchmarks
Audit & Reporting Tools
generate_audit_reports- Generate comprehensive audit reports for various frameworks
Dynamic API Access
dynamicendpoints m365 assistant- Call arbitrary Microsoft Graph or Azure Resource Management API endpoints
Resources
The server provides 44 comprehensive resources covering security, compliance, device management, and collaboration:
Core Resources
sharepoint_sites- SharePoint site information and configurationsharepoint_lists- SharePoint list structures and metadatasharepoint_list_items- Items within SharePoint listssecurity_incidents- Microsoft security incidents and details
Extended Security Resources (20 resources)
Security alerts and incidents from Microsoft Defender
Conditional access policies and assignments
Privileged access management data
Threat intelligence and vulnerability assessments
Identity protection risks and policies
Authentication methods and security defaults
Compliance policies and their status
Data governance and retention policies
Insider risk management insights
Security baselines and configurations
Device Management Resources (10 resources)
Intune device inventories and compliance status
Mobile application management policies
Device configuration profiles and assignments
Compliance policies for various platforms
App protection policies and status
Device enrollment configurations
Update policies and deployment rings
Certificate profiles and management
Wi-Fi and VPN configuration profiles
Endpoint protection policies
Collaboration Resources (10 resources)
Microsoft Teams structures and policies
Exchange Online configurations and settings
Calendar and scheduling information
OneDrive storage and sharing policies
Planner tasks and project management
Viva Engage (Yammer) communities
Power Platform environments and apps
Booking services and appointments
Whiteboard collaboration data
Stream video content and policies
Extended Dynamic Resources
All resources support URI templates for specific object access:
m365://security/alerts/{alertId}- Specific security alert detailsm365://devices/{deviceId}- Individual device informationm365://users/{userId}/compliance- User-specific compliance statusm365://teams/{teamId}/governance- Team governance and policies
Intelligent Prompts
The server provides 5 comprehensive prompts for automated analysis and recommendations:
Security Assessment Prompt
Purpose: Comprehensive security posture analysis with actionable recommendations
Scope: Security policies, access controls, threat detection, identity protection
Output: Risk assessment, security gaps, remediation roadmap
Compliance Review Prompt
Purpose: Framework-specific compliance gap analysis
Frameworks: SOC2, ISO27001, NIST, GDPR, HIPAA, CIS Controls
Scope: Control implementation status, evidence collection, audit readiness
Output: Compliance dashboard, gap analysis, remediation plans
User Access Review Prompt
Purpose: Individual and organization-wide access rights analysis
Scope: Role assignments, group memberships, application access, privileged accounts
Output: Access recommendations, risk-based prioritization, cleanup tasks
Device Compliance Analysis Prompt
Purpose: Intune device management and compliance assessment
Scope: Device policies, compliance status, security configurations, app management
Output: Compliance reports, policy recommendations, deployment guidance
Collaboration Governance Prompt
Purpose: Teams and SharePoint governance analysis
Scope: Team structures, sharing policies, external access, data governance
Output: Governance recommendations, policy suggestions, compliance alignment
Each prompt provides contextual analysis, actionable insights, and integration with the corresponding management tools for immediate remediation.
Example Tool Usage
// Managing a distribution list
await callTool('manage_distribution_lists', {
action: 'create',
displayName: 'Marketing Team',
emailAddress: 'marketing@company.com',
members: ['user1@company.com', 'user2@company.com']
});
// Managing security groups
await callTool('manage_security_groups', {
action: 'create',
displayName: 'IT Admins',
description: 'IT Administration Team',
members: ['admin1@company.com']
});
// Managing Azure AD roles (note: using correct tool name)
await callTool('manage_azuread_roles', {
action: 'assign_role',
roleId: 'role-id-here',
principalId: 'user-id-here'
});
// Managing DLP policies
await callTool('manage_dlp_policies', {
action: 'create',
policyName: 'Financial Data Protection',
rules: [{
name: 'Block Credit Cards',
conditions: { contentContainsSensitiveInfo: ['CreditCardNumber'] },
actions: { blockAccess: true }
}]
});
// Managing Intune macOS devices
await callTool('manage_intune_macos_devices', {
action: 'list',
filters: { complianceState: 'compliant' }
});
// Running compliance assessments
await callTool('manage_compliance_assessments', {
action: 'run_assessment',
framework: 'iso27001',
scope: ['access_control', 'data_protection'],
settings: {
automated: true,
generateRemediation: true
}
});
// Generating audit reports
await callTool('generate_audit_reports', {
framework: 'soc2',
reportType: 'comprehensive',
dateRange: { start: '2025-01-01', end: '2025-06-16' },
format: 'pdf',
includeEvidence: true
});
// Managing Exchange settings
await callTool('manage_exchange_settings', {
action: 'update',
settingType: 'mailbox',
target: 'user@company.com',
settings: {
automateProcessing: {
autoReplyEnabled: true
}
}
});
// Managing SharePoint sites
await callTool('manage_sharepoint_sites', {
action: 'create',
title: 'Marketing Site',
description: 'Site for marketing team',
template: 'STS#0',
url: 'https://contoso.sharepoint.com/sites/marketing',
owners: ['user1@company.com'],
members: ['user2@company.com', 'user3@company.com']
});
// Managing SharePoint lists
await callTool('manage_sharepoint_lists', {
action: 'create',
siteId: 'contoso.sharepoint.com,5a14e1cf-e284-4722-8f50-a5e1b2b0a8d6,9528e4bb-7660-4b11-a758-9d8fb3ca295f',
title: 'Project Tasks',
description: 'List of project tasks',
columns: [
{ name: 'Title', type: 'text', required: true },
{ name: 'DueDate', type: 'dateTime' },
{ name: 'Status', type: 'choice', choices: ['Not Started', 'In Progress', 'Completed'] }
]
});
// Dynamic API calls for custom scenarios
await callTool('dynamicendpoints m365 assistant', {
apiType: 'graph',
path: '/me/messages',
method: 'get',
queryParams: { '$top': '10', '$filter': 'isRead eq false' }
});Implementation Details
Schema Validation
The server uses Zod for schema validation, providing:
Runtime type checking for all inputs
Detailed validation error messages
Type inference for TypeScript
Automatic documentation of input schemas
Error Handling
The server implements comprehensive error handling:
Input validation for all parameters
Graph API error handling
Token refresh management
Detailed error messages with proper error codes
Contributing
Fork the repository
Create a feature branch
Commit your changes
Push to the branch
Create a Pull Request
License
MIT
Available Tools
55 toolsbackup_policiesARead-onlyIdempotent
Export Microsoft 365 policies to JSON format for backup, disaster recovery, and migration. Supports Conditional Access, Named Locations, Authentication Strengths, Intune policies, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform - backup exports policies, list shows available types | |
| policyTypes | No | Types of policies to backup. Use "all" to backup all types | |
| outputFormat | No | Output format - json for full backup, summary for overview | |
| includeMetadata | No | Include metadata like tenant ID, export timestamp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds valuable context by specifying the output format (JSON) and supported policy types (e.g., Conditional Access, Intune policies), which goes beyond annotations. It doesn't mention rate limits, authentication needs, or detailed behavioral traits, but with annotations present, the bar is lower, and the description provides useful supplemental information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with two sentences that efficiently convey the core purpose and scope. Every sentence earns its place: the first states the main action and use cases, and the second lists supported policy types without redundancy. No wasted words or unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, 100% schema coverage, annotations provided), the description is reasonably complete. It covers the tool's purpose, output format, and supported policy types. However, without an output schema, it doesn't explain return values (e.g., structure of JSON output), and it lacks details on error handling or limitations. Annotations help, but some gaps remain for a tool with multiple parameters and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters well-documented in the schema (e.g., 'action' with enum values, 'policyTypes' with options). The description adds minimal parameter semantics beyond the schema, mentioning 'JSON format' which aligns with the 'outputFormat' parameter but doesn't provide additional details. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Export Microsoft 365 policies to JSON format for backup, disaster recovery, and migration.' It specifies the verb (export), resource (Microsoft 365 policies), and format (JSON), and lists supported policy types. However, it doesn't explicitly differentiate from sibling tools like 'manage_conditional_access_policies' or 'manage_intune_windows_policies', which appear to be management-focused rather than export-focused.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for backup, disaster recovery, and migration scenarios, providing some context. However, it doesn't explicitly state when to use this tool versus alternatives (e.g., 'manage_*' tools for editing policies or 'generate_*_report' tools for reporting). No exclusions or prerequisites are mentioned, leaving usage guidelines somewhat vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
call_microsoft_apiA
Make direct calls to any Microsoft Graph or Azure Resource Management API endpoint with full control over HTTP methods and parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| apiType | Yes | API type: Microsoft Graph or Azure Resource Management | |
| path | Yes | API URL path (e.g., '/users') | |
| method | Yes | HTTP method | |
| apiVersion | No | Azure API version (required for Azure APIs) | |
| subscriptionId | No | Azure Subscription ID (for Azure APIs) | |
| queryParams | No | Query parameters | |
| body | No | Request body (for POST, PUT, PATCH) | |
| graphApiVersion | No | Microsoft Graph API version to use (default: v1.0) | v1.0 |
| fetchAll | No | Set to true to automatically fetch all pages for list results (e.g., users, groups). Default is false. | |
| consistencyLevel | No | Graph API ConsistencyLevel header. ADVISED to be set to 'eventual' for Graph GET requests using advanced query parameters ($filter, $count, $search, $orderby). | |
| maxRetries | No | Maximum number of retries for failed requests (0-5, default: 3) | |
| retryDelay | No | Base delay between retries in milliseconds (100-10000, default: 1000) | |
| timeout | No | Request timeout in milliseconds (5000-300000, default: 30000) | |
| customHeaders | No | Additional custom headers to include in the request | |
| responseFormat | No | Response format: 'json' (full response), 'raw' (as received), 'minimal' (values only) | json |
| selectFields | No | Array of specific fields to select (applies $select automatically for Graph API) | |
| expandFields | No | Array of fields to expand (applies $expand automatically for Graph API) | |
| batchSize | No | Batch size for pagination when fetchAll is true (1-1000, default: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations. While annotations indicate non-read-only, non-idempotent, and non-destructive operations, the description clarifies this is a 'direct call' tool with 'full control', implying it can perform any HTTP method (including destructive ones like DELETE) and requires careful parameter handling. It doesn't contradict annotations but provides important operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core functionality. Every word earns its place by clearly stating what the tool does without unnecessary elaboration. It's appropriately sized for a general-purpose tool with extensive parameter documentation elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 18-parameter tool with no output schema, the description provides adequate context about its general-purpose nature. While it doesn't explain return values or detailed error handling, it clearly communicates the tool's scope as a direct API caller. The 100% schema coverage compensates for parameter documentation gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents all 18 parameters thoroughly. The description doesn't add significant parameter semantics beyond implying general API calling functionality. It mentions 'full control over HTTP methods and parameters' which aligns with the schema but doesn't provide additional syntax or format details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Make direct calls') and resources ('Microsoft Graph or Azure Resource Management API endpoint'), distinguishing it from sibling tools that perform specific operations like managing policies or generating reports. It explicitly mentions 'full control over HTTP methods and parameters', which sets it apart as a general-purpose API caller.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for direct API calls when specific sibling tools aren't suitable, but doesn't explicitly state when to use this tool versus alternatives like execute_graph_batch or execute_graph_search. It provides a general context ('full control') but lacks explicit guidance on use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_delta_queryARead-onlyIdempotent
Track incremental changes to Microsoft Graph resources using delta queries for efficient synchronization.
| Name | Required | Description | Default |
|---|---|---|---|
| resource | Yes | Graph resource path (e.g., /users, /groups) | |
| deltaToken | No | Delta token from previous query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only, idempotent, and non-destructive operations, which the description doesn't contradict. The description adds valuable context beyond annotations: it explains the tool's behavioral trait of tracking 'incremental changes' and being for 'efficient synchronization,' which helps the agent understand its role in change tracking workflows. However, it doesn't detail rate limits, auth needs, or response formats, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without any wasted words. Every part of the sentence ('Track incremental changes...', 'using delta queries...', 'for efficient synchronization') contributes directly to understanding the tool's function and context, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (delta queries for synchronization), annotations cover safety (read-only, idempotent), and schema covers parameters fully, the description provides adequate context. It explains the high-level behavior and use case, which is crucial for an AI agent. However, without an output schema, it doesn't describe return values or pagination, leaving a minor gap that prevents a perfect 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (resource and deltaToken) well. The description doesn't add specific syntax or format details beyond what the schema provides, such as examples of resource paths or delta token usage. It implies parameter usage ('using delta queries') but doesn't enhance the schema's information, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Track incremental changes to Microsoft Graph resources using delta queries for efficient synchronization.' It specifies the verb ('track'), resource ('Microsoft Graph resources'), and method ('delta queries'), making it distinct from siblings like execute_graph_search or search_audit_log. However, it doesn't explicitly differentiate from execute_graph_batch, which might also handle Graph operations, so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('for efficient synchronization') and suggests this is for incremental updates rather than full queries. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like execute_graph_search or manage_graph_subscriptions, nor does it mention prerequisites or exclusions. This leaves some ambiguity for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_graph_batchB
Execute multiple Microsoft Graph API requests in a single batch operation for improved performance and efficiency.
| Name | Required | Description | Default |
|---|---|---|---|
| requests | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only, idempotent, or destructive, but the description adds value by explaining the batch operation's purpose for performance. However, it lacks details on error handling, rate limits, authentication needs, or response format. With annotations covering basic safety, the description provides some context but not rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the core purpose and benefit. It's front-loaded with the main action and avoids unnecessary words, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (handling batch API requests with multiple methods), lack of output schema, and 0% schema description coverage, the description is insufficient. It doesn't explain the input structure, response format, error handling, or limitations, making it incomplete for effective agent use despite the concise phrasing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it provides no information about the 'requests' parameter. The description mentions 'multiple Microsoft Graph API requests' but doesn't explain the structure, required fields (like 'method' and 'url'), or constraints (e.g., max 20 items). This leaves a significant gap in understanding how to use the tool effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Execute multiple Microsoft Graph API requests in a single batch operation.' It specifies the verb ('execute'), resource ('Microsoft Graph API requests'), and scope ('multiple...in a single batch operation'). However, it doesn't explicitly differentiate from sibling tools like 'call_microsoft_api' or 'execute_graph_search', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning 'improved performance and efficiency,' suggesting this tool should be used when batching multiple requests. However, it doesn't provide explicit guidance on when to use this versus alternatives (e.g., 'call_microsoft_api' for single requests) or any prerequisites or exclusions, leaving room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_graph_searchBRead-onlyIdempotent
Execute advanced search queries across Microsoft 365 content including emails, files, messages, and calendar events.
| Name | Required | Description | Default |
|---|---|---|---|
| entityTypes | Yes | ||
| queryString | Yes | Search query string | |
| from | No | Starting index for results | |
| size | No | Number of results to return | |
| fields | No | Fields to include in results | |
| sortProperties | No | Sort properties | |
| aggregations | No | Aggregation definitions | |
| queryAlterationOptions | No | Query alteration options |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, repeatable read operation. The description adds context about the search scope ('Microsoft 365 content') and content types, but doesn't disclose behavioral traits like rate limits, authentication needs, result format, or pagination details beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary details. Every word contributes to understanding the tool's function, making it appropriately sized and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, nested objects, no output schema) and rich annotations, the description is adequate but incomplete. It covers the basic purpose and scope, but lacks details on result handling, error conditions, or advanced usage scenarios that would help an agent invoke it correctly in diverse contexts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high at 88%, with most parameters well-documented in the schema. The description mentions 'advanced search queries' and lists content types (emails, files, messages, calendar events), which partially maps to 'entityTypes', but adds minimal semantic value beyond the schema. It doesn't explain parameter interactions or advanced features like aggregations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Execute advanced search queries across Microsoft 365 content including emails, files, messages, and calendar events.' It specifies the verb ('execute'), resource ('search queries'), and scope ('Microsoft 365 content'), but doesn't explicitly differentiate from sibling tools like 'search_audit_log' or 'execute_delta_query' beyond the content scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'search_audit_log' or 'execute_delta_query', nor does it specify use cases, prerequisites, or exclusions. The agent must infer usage from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_audit_reportsBRead-onlyIdempotent
Generate comprehensive audit reports for compliance frameworks with evidence documentation and findings.
| Name | Required | Description | Default |
|---|---|---|---|
| framework | Yes | Compliance framework | |
| reportType | Yes | Type of audit report | |
| dateRange | Yes | Report time range | |
| format | Yes | Report output format | |
| includeEvidence | Yes | Include supporting evidence | |
| outputPath | No | Output file path | |
| customTemplate | No | Custom template path | |
| filters | No | Report filters |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds minimal behavioral context by implying report generation with evidence, but doesn't detail output handling, file creation, permissions, or rate limits. With annotations providing core safety info, the description adds some value but lacks rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a tool with many parameters, though it could be more front-loaded with key differentiators. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, nested objects) and lack of output schema, the description is adequate but incomplete. It covers the basic purpose but doesn't explain return values, error handling, or output file behavior. With annotations providing safety info and schema covering parameters, it meets minimum viability but leaves gaps for a generative tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in the schema itself. The description mentions 'compliance frameworks' and 'evidence documentation', which loosely map to 'framework' and 'includeEvidence' parameters, but adds no significant semantic details beyond what the schema provides. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Generate comprehensive audit reports for compliance frameworks with evidence documentation and findings.' It specifies the verb ('generate'), resource ('audit reports'), and scope ('compliance frameworks'), but doesn't explicitly differentiate from sibling tools like 'generate_html_report' or 'generate_professional_report' that might overlap in report generation functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, appropriate contexts, or exclusions, nor does it reference sibling tools that might handle similar report generation tasks. The agent receives no usage differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_html_reportB
Create interactive HTML reports and dashboards with responsive design, charts, and filtering capabilities.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action: create new HTML report, get existing, or list all | |
| fileName | No | Name for the HTML file (for create action) | |
| driveId | No | OneDrive/SharePoint drive ID (default: user's OneDrive) | |
| folderId | No | Folder ID within the drive (default: root) | |
| template | No | Template configuration for HTML report styling | |
| sections | No | Array of HTML sections to create | |
| includeCharts | No | Enable interactive charts with Chart.js | |
| fileId | No | File ID for get action | |
| filter | No | OData filter for list action | |
| top | No | Number of results to return (for list action) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-readOnly, non-idempotent, non-destructive tool. The description adds that it creates reports with interactive features, which aligns with annotations but doesn't provide additional behavioral context like where reports are saved, authentication requirements, rate limits, or error handling. The description doesn't contradict annotations, but adds minimal value beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. Every word earns its place by specifying key features (interactive, responsive design, charts, filtering). There's no redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 10 parameters, nested objects, and no output schema, the description is minimal. While annotations cover basic safety, the description doesn't address where reports are stored, format of outputs, or error conditions. Given the tool's complexity and lack of output schema, more context about the created artifact would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema fully documents all 10 parameters. The description mentions 'responsive design, charts, and filtering capabilities' which loosely maps to template and sections parameters, but adds no specific syntax or format details beyond what the schema provides. The baseline score of 3 is appropriate given the comprehensive schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates interactive HTML reports with specific features (responsive design, charts, filtering). It specifies the verb 'create' and resource 'HTML reports and dashboards', but doesn't explicitly distinguish from sibling tools like generate_professional_report or generate_word_document, which might serve similar reporting purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, appropriate contexts, or compare it to sibling tools like generate_professional_report or generate_powerpoint_presentation. The agent must infer usage solely from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_powerpoint_presentationB
Create professional PowerPoint presentations with custom slides, charts, tables, and themes from Microsoft 365 data.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform: create new presentation, get existing, list all, or export to format | |
| fileName | No | Name for the new presentation file (for create action) | |
| driveId | No | OneDrive/SharePoint drive ID where file should be created (default: user's OneDrive) | |
| folderId | No | Folder ID within the drive (default: root) | |
| template | No | Template configuration for presentation styling | |
| slides | No | Array of slide definitions to create | |
| fileId | No | File ID for get/export actions | |
| format | No | Export format (for export action) | |
| filter | No | OData filter for list action | |
| top | No | Number of results to return (for list action) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-read-only, non-idempotent, non-destructive tool, which the description aligns with by implying creation/modification. The description adds value by specifying the source ('Microsoft 365 data') and output type ('professional PowerPoint presentations'), but doesn't disclose behavioral traits like rate limits, authentication needs, or what happens on failure. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It avoids redundancy and wastes no words, though it could be slightly more structured by separating key features. Every part earns its place by specifying the tool's scope and capabilities.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, nested objects, no output schema) and annotations covering basic safety, the description is adequate but incomplete. It outlines what the tool does but lacks details on output format, error handling, or dependencies, leaving gaps for the agent to infer from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema thoroughly documents all 10 parameters. The description adds minimal semantics beyond the schema, only hinting at 'custom slides, charts, tables, and themes' which loosely maps to some parameters. It doesn't explain parameter interactions or provide usage examples, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates PowerPoint presentations with custom elements from Microsoft 365 data, specifying the verb ('create') and resource ('PowerPoint presentations'). However, it doesn't explicitly differentiate from sibling tools like 'generate_word_document' or 'generate_html_report' beyond mentioning PowerPoint specifically, which is why it doesn't reach a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for choosing PowerPoint over other report formats, or any exclusions. The agent must infer usage from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_professional_reportB
Generate comprehensive professional reports in multiple formats (PowerPoint, Word, HTML, PDF) from Microsoft 365 data.
| Name | Required | Description | Default |
|---|---|---|---|
| reportType | Yes | Type of professional report to generate | |
| title | Yes | Report title | |
| description | No | Report description | |
| dataQueries | No | Data queries to execute and include in report | |
| includeCharts | No | Include visual charts in the report | |
| includeTables | No | Include data tables in the report | |
| includeSummary | No | Include executive summary | |
| outputFormats | Yes | Output formats to generate (can select multiple) | |
| driveId | No | OneDrive/SharePoint drive ID for saving reports | |
| folderId | No | Folder ID within the drive | |
| fileNamePrefix | No | Prefix for generated file names | |
| template | No | Report branding and styling |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-readOnly, non-idempotent, non-destructive operation. The description adds context about output formats and data sources, but doesn't disclose behavioral traits like whether reports are saved automatically, if there are rate limits, authentication requirements, or what happens on failure. With annotations providing basic safety hints, the description adds some value but lacks rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It wastes no words, though it could be slightly more structured by separating format and data source details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 parameters, nested objects) and lack of output schema, the description is minimally adequate. It covers what the tool does but doesn't explain return values, error handling, or integration with sibling tools. With annotations providing basic hints and high schema coverage, it meets the minimum viable threshold but has clear gaps for such a multifaceted tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 12 parameters. The description mentions 'multiple formats' and 'Microsoft 365 data,' which loosely maps to outputFormats and dataQueries parameters, but adds no specific syntax, format details, or constraints beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Generate comprehensive professional reports in multiple formats (PowerPoint, Word, HTML, PDF) from Microsoft 365 data.' It specifies the verb ('generate'), resource ('professional reports'), and scope ('from Microsoft 365 data'), but doesn't explicitly differentiate from sibling tools like generate_audit_reports, generate_html_report, generate_powerpoint_presentation, or generate_word_document, which appear to be more specialized versions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools, prerequisites, or specific contexts where this tool is preferred. The agent must infer usage from the tool name and parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_word_documentB
Create professional Word documents with formatted sections, tables, charts, and table of contents from analysis data.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action: create new document, get existing, list all, export to format, or append content | |
| fileName | No | Name for the new document file (for create action) | |
| driveId | No | OneDrive/SharePoint drive ID (default: user's OneDrive) | |
| folderId | No | Folder ID within the drive (default: root) | |
| template | No | Template configuration for document styling | |
| sections | No | Array of content sections to create | |
| fileId | No | File ID for get/export/append actions | |
| format | No | Export format (for export action) | |
| content | No | Content to append (for append action) | |
| filter | No | OData filter for list action | |
| top | No | Number of results to return (for list action) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-read-only, non-idempotent, non-destructive tool, but the description adds minimal behavioral context. It mentions creating documents 'from analysis data,' which hints at input requirements, but doesn't cover rate limits, authentication needs, error handling, or what happens on failure. The description doesn't contradict annotations, but adds only basic context beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the core functionality. It's front-loaded with the main action and key features, with no wasted words. However, it could be slightly more concise by avoiding the redundant 'professional' qualifier, but overall it's appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, nested objects, no output schema) and minimal annotations, the description is adequate but incomplete. It covers the 'what' but lacks details on usage, behavioral traits, or output expectations. For a multi-action tool with significant parameter complexity, more context would be beneficial, but it meets minimum viability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 11 parameters. The description adds no parameter-specific information beyond the general mention of 'formatted sections, tables, charts, and table of contents,' which loosely maps to some parameters but doesn't provide additional semantics. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create professional Word documents with formatted sections, tables, charts, and table of contents from analysis data.' It specifies the verb ('Create'), resource ('Word documents'), and key features. However, it doesn't explicitly differentiate from sibling tools like 'generate_powerpoint_presentation' or 'generate_html_report' beyond mentioning Word documents, which is why it doesn't reach a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, constraints, or scenarios where this tool is preferred over other document-generation tools in the sibling list. The agent must infer usage from the description alone, which lacks explicit when/when-not instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_alertsBIdempotent
Manage security alerts from Microsoft Defender and other security products including investigation and remediation.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Alert management action | |
| alertId | No | ID of the alert (required for get_alert) | |
| filter | No | OData filter string (e.g., 'status eq \'new\'') | |
| top | No | Maximum number of alerts to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds some behavioral context beyond annotations: it mentions 'investigation and remediation' which suggests the tool may support actions beyond just listing alerts. However, annotations already provide important hints (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the description doesn't need to repeat safety information. It could be more specific about what 'remediation' entails or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately front-loaded with the main function. However, it could be slightly more structured by separating the different action types (list vs get) or mentioning the supported security products more explicitly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, no output schema, annotations covering safety but not behavior details), the description is minimally adequate. It states what the tool does but lacks important context about return formats, error conditions, or how the 'action' parameter determines which other parameters are required. Without an output schema, the description should ideally mention what kind of data is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already documents all 4 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. The baseline score of 3 is appropriate since the schema does the heavy lifting, though the description could have explained how parameters like 'filter' and 'top' relate to the 'list_alerts' action.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: managing security alerts from Microsoft Defender and other products, including investigation and remediation. It specifies the resource (security alerts) and scope (multiple security products), but doesn't explicitly differentiate from sibling tools like 'manage_security_alert_policies' or 'manage_dlp_incidents' that might handle related security domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over sibling tools like 'manage_security_alert_policies' (which might handle policy configuration) or 'manage_dlp_incidents' (which might handle data loss incidents specifically). There's no context about prerequisites, dependencies, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_authentication_strengthsBRead-onlyIdempotent
View and manage authentication strength policies that define which authentication methods satisfy MFA requirements in Conditional Access.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on authentication strength policies | |
| policyId | No | Authentication strength policy ID for specific operations | |
| policyType | No | Type of policies to list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which already inform the agent this is a safe, non-destructive read operation. The description adds context by mentioning 'view and manage,' which could imply write capabilities, but this is clarified by the annotations. It doesn't provide additional behavioral details like rate limits, authentication needs, or response formats, relying on annotations for core safety information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('View and manage authentication strength policies') and adds context about MFA requirements in Conditional Access. It avoids redundancy and wastes no words, though it could be slightly more structured by separating viewing and managing aspects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no output schema) and rich annotations (readOnlyHint, idempotentHint, destructiveHint), the description is adequate but incomplete. It covers the what and why but lacks guidance on usage, parameter interactions, or output expectations. With annotations handling safety, it's minimally viable but could better support agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for all parameters (action, policyId, policyType) and enums for action and policyType. The description doesn't add any parameter-specific details beyond what the schema provides, such as explaining the differences between action values or when policyId is required. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'View and manage authentication strength policies that define which authentication methods satisfy MFA requirements in Conditional Access.' It specifies both read ('view') and write ('manage') operations on a specific resource (authentication strength policies) with their functional context. However, it doesn't explicitly differentiate from sibling tools like 'manage_conditional_access_policies' or 'manage_user_settings' that might overlap in domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions the tool's domain (Conditional Access MFA requirements) but doesn't specify prerequisites, exclusions, or compare it to sibling tools like 'manage_conditional_access_policies' that might handle related aspects. Usage is implied through the action parameter but not explained in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_azure_ad_appsBDestructive
Manage Azure AD application registrations including app permissions, credentials, and OAuth configurations.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Azure AD application management action | |
| appId | No | Object ID of the application | |
| ownerId | No | Object ID of the user to add/remove as owner | |
| appDetails | No | Application details for updates | |
| filter | No | OData filter string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, covering safety and idempotency. The description adds context about what gets managed (permissions, credentials, configurations) but doesn't disclose rate limits, authentication requirements, or specific destructive behaviors beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a multi-action tool, though it could be more structured by explicitly listing the action types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, multi-action tool with destructive annotations and no output schema, the description is minimally adequate. It covers the scope but lacks crucial context about permissions, error handling, or response format that would help an agent use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in the schema. The description mentions 'app permissions, credentials, and OAuth configurations' which loosely maps to some action values but doesn't add meaningful semantic context beyond what the schema already provides about each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'manage' and resource 'Azure AD application registrations' with specific aspects like 'app permissions, credentials, and OAuth configurations'. It distinguishes from general Azure AD tools but doesn't explicitly differentiate from sibling tools like 'manage_service_principals' or 'manage_azure_ad_roles'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, permissions needed, or when to choose this over other Azure AD management tools in the sibling list. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_azure_ad_devicesBDestructive
Manage devices registered in Azure AD including device compliance, BitLocker keys, and device actions.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Azure AD device management action | |
| deviceId | No | Object ID of the device | |
| filter | No | OData filter string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, readOnlyHint=false, and idempotentHint=false, covering safety and idempotency. The description adds some context by mentioning 'device actions' (implied mutations) and specific features like BitLocker keys, but doesn't elaborate on rate limits, authentication needs, or error behaviors. It doesn't contradict annotations, so it earns a baseline score for adding modest value beyond structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It avoids redundancy and wastes no words, though it could be slightly more structured by separating capabilities. It's appropriately sized for a multi-action tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters, no output schema, and annotations covering destructive/read-only/idempotent hints, the description is minimally adequate. It outlines scope but lacks details on return values, error handling, or Azure AD-specific constraints. Given the complexity of device management, it should provide more context to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear parameter descriptions and an enum for 'action'. The description implies parameters through terms like 'device compliance' and 'device actions', but doesn't add specific semantics beyond what the schema provides (e.g., explaining filter syntax or deviceId format). Given high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage devices registered in Azure AD including device compliance, BitLocker keys, and device actions.' It specifies the verb ('manage'), resource ('devices registered in Azure AD'), and scope ('device compliance, BitLocker keys, and device actions'). However, it doesn't explicitly differentiate from sibling tools like 'manage_intune_windows_devices' or 'manage_intune_macos_devices', which might handle similar device management in different contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions general capabilities but doesn't specify prerequisites, context (e.g., Azure AD vs. Intune), or exclusions. With many sibling tools for device and policy management, this lack of differentiation leaves the agent without clear usage cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_azure_ad_rolesBDestructive
Manage Azure AD administrative roles including role assignments, custom roles, and privilege escalation controls.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Azure AD role management action | |
| roleId | No | ID of the directory role | |
| principalId | No | ID of the principal (user, group, SP) | |
| assignmentId | No | ID of the role assignment to remove | |
| filter | No | OData filter string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, readOnlyHint=false, and idempotentHint=false, which already inform the agent about safety and idempotency. The description adds some context by mentioning 'privilege escalation controls,' hinting at high-risk operations, but doesn't elaborate on behavioral traits like rate limits, authentication requirements, or side effects beyond what annotations provide. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It could be slightly improved by structuring usage guidelines, but it avoids redundancy and waste, earning a high score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (managing Azure AD roles with destructive operations) and the absence of an output schema, the description is minimally adequate. It covers the scope but lacks details on return values, error conditions, or operational constraints. With annotations providing safety hints, it meets a basic threshold but doesn't fully address the tool's high-stakes nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters documented in the schema (e.g., action with enum values, roleId, principalId). The description doesn't add any parameter-specific details beyond the schema, such as explaining how 'filter' works or providing examples. With high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage Azure AD administrative roles including role assignments, custom roles, and privilege escalation controls.' It specifies the verb ('manage'), resource ('Azure AD administrative roles'), and scope (role assignments, custom roles, privilege escalation controls). However, it doesn't explicitly differentiate from sibling tools like 'manage_azure_ad_apps' or 'manage_service_principals', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., requiring specific permissions), contextual triggers (e.g., 'use when onboarding users'), or exclusions (e.g., 'not for basic user management'). With many sibling tools available, this lack of differentiation is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_cis_complianceBIdempotent
Manage CIS (Center for Internet Security) benchmark compliance including assessment and remediation tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | CIS compliance action | |
| benchmark | No | CIS benchmark to assess | |
| implementationGroup | No | Implementation group | |
| controlIds | No | Specific control IDs | |
| scope | No | Assessment scope | |
| settings | No | Assessment settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the agent knows this is a mutable but safe, idempotent operation. The description adds some context by mentioning 'assessment and remediation tracking,' which hints at read/write capabilities, but doesn't provide additional behavioral details like rate limits, authentication requirements, or what specific actions might be destructive. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part of the sentence ('Manage CIS benchmark compliance including assessment and remediation tracking') contributes directly to understanding the tool's scope and functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters with nested objects) and lack of an output schema, the description is minimally adequate. It covers the general domain but doesn't address output format, error conditions, or detailed behavioral expectations. With annotations providing safety and idempotency hints, and schema covering parameters, the description meets a basic threshold but leaves gaps for a multi-action tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema itself. The description doesn't add any parameter-specific details beyond what's in the schema (e.g., it doesn't explain the relationship between 'action' values and other parameters like 'benchmark' or 'scope'). With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate with extra semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage CIS (Center for Internet Security) benchmark compliance including assessment and remediation tracking.' It specifies the verb 'manage' and the resource 'CIS benchmark compliance' with scope details. However, it doesn't explicitly differentiate from sibling tools like 'manage_compliance_assessments' or 'manage_compliance_frameworks' that might handle similar compliance domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, exclusions, or compare it to sibling tools like 'manage_compliance_assessments' or 'manage_compliance_frameworks' that might overlap in functionality. The agent must infer usage solely from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_compliance_assessmentsBRead-onlyIdempotent
Conduct compliance assessments and generate detailed reports on regulatory adherence and security controls.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Compliance assessment action | |
| assessmentId | No | Assessment ID for tracking | |
| framework | Yes | Framework to assess against | |
| scope | Yes | Assessment scope | |
| settings | No | Assessment settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which already convey that the tool is safe, non-destructive, and repeatable. The description adds value by mentioning 'generate detailed reports', implying an output behavior, but it doesn't disclose additional traits like rate limits, authentication needs, or specific report formats. There is no contradiction with annotations, as 'conduct' and 'generate' align with read-only operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core functionality: 'Conduct compliance assessments and generate detailed reports on regulatory adherence and security controls.' It avoids redundancy and waste, though it could be slightly more structured by separating assessment and report aspects for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, nested objects) and lack of output schema, the description is minimally adequate. Annotations cover safety and idempotency, but the description doesn't fully address behavioral nuances like report generation details or error handling. It provides a basic overview but lacks depth for a multi-action tool with significant parameter requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters well-documented in the input schema, including enums for 'action' and 'framework'. The description adds no specific parameter details beyond what the schema provides, such as explaining 'scope' or 'settings' further. Thus, it meets the baseline for high schema coverage without enhancing parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Conduct compliance assessments and generate detailed reports on regulatory adherence and security controls.' It specifies the verb ('conduct' and 'generate') and resource ('compliance assessments' and 'reports'), making the function evident. However, it doesn't differentiate from sibling tools like 'manage_compliance_frameworks' or 'manage_compliance_monitoring', which likely handle related but distinct aspects of compliance management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It lacks explicit instructions on context, prerequisites, or comparisons with sibling tools such as 'manage_compliance_frameworks' or 'generate_audit_reports'. This omission leaves the agent without clear direction on appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_compliance_frameworksBIdempotent
Manage compliance frameworks and standards including HIPAA, GDPR, SOX, PCI-DSS, ISO 27001, and NIST configurations.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Compliance framework management action | |
| framework | Yes | Compliance framework type | |
| scope | No | Assessment scope (organization, specific systems) | |
| settings | No | Framework settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds minimal behavioral context beyond what annotations provide. Annotations already indicate this is a mutable (readOnlyHint: false), idempotent (idempotentHint: true), and non-destructive (destructiveHint: false) operation. The description mentions 'configurations' which hints at setup/modification tasks, but doesn't elaborate on permissions, side effects, or response formats. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's scope. It front-loads the core purpose and includes relevant examples. While it could be slightly more structured (e.g., separating examples), it avoids unnecessary elaboration and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters with enums and nested objects, no output schema) and rich annotations, the description is adequate but incomplete. It covers the 'what' (managing frameworks) but lacks the 'how' (parameter interactions, expected outcomes) and 'when' (usage context). For a multi-action tool with significant configuration options, more guidance would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already documents all 4 parameters thoroughly. The description doesn't add any parameter-specific details beyond the generic mention of 'configurations' (which loosely relates to the 'settings' parameter). It doesn't explain how parameters interact or provide usage examples, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage compliance frameworks and standards' with specific examples (HIPAA, GDPR, SOX, PCI-DSS, ISO 27001, NIST). It uses a specific verb ('manage') and identifies the resource ('compliance frameworks and standards'), but doesn't explicitly differentiate from sibling tools like 'manage_compliance_assessments' or 'manage_cis_compliance' that might handle similar domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, exclusions, or specific contexts for usage. With multiple sibling tools in the compliance domain (e.g., manage_compliance_assessments, manage_cis_compliance), the lack of differentiation leaves the agent without clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_compliance_monitoringBRead-onlyIdempotent
Monitor ongoing compliance status with real-time alerts for policy violations and regulatory changes.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Compliance monitoring action | |
| framework | No | Framework to monitor | |
| filters | No | Monitoring filters | |
| monitoringSettings | No | Monitoring settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which already inform the agent that this is a safe, non-destructive read operation. The description adds some context by mentioning 'real-time alerts,' suggesting dynamic monitoring, but it doesn't disclose additional behavioral traits like rate limits, authentication needs, or what specific data is returned. Since annotations cover the safety profile, the description provides moderate added value without contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose: 'Monitor ongoing compliance status with real-time alerts for policy violations and regulatory changes.' It avoids unnecessary words and gets straight to the point. However, it could be slightly more structured by breaking down key aspects, but it's still highly concise and effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, nested objects, no output schema) and rich annotations, the description is somewhat complete but has gaps. It covers the high-level purpose but lacks details on output format, error handling, or specific use cases. With annotations providing safety info and schema covering parameters, the description is adequate but not fully comprehensive for guiding an agent in all operational contexts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters documented in the schema (e.g., 'action' with enum values, 'framework' with enum). The description doesn't add any parameter-specific details beyond what the schema provides, such as explaining the purpose of 'filters' or 'monitoringSettings.' Given the high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Monitor ongoing compliance status with real-time alerts for policy violations and regulatory changes.' It specifies the verb 'monitor' and the resource 'compliance status,' making the intent clear. However, it doesn't explicitly differentiate this tool from sibling tools like 'manage_compliance_assessments' or 'manage_cis_compliance,' which might handle similar compliance domains, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions monitoring compliance status but doesn't specify contexts, prerequisites, or exclusions. For example, it doesn't clarify if this is for real-time vs. historical monitoring or how it differs from sibling tools like 'manage_alerts' or 'generate_audit_reports.' This lack of usage context leaves the agent without clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_conditional_access_policiesBDestructive
Manage Azure AD conditional access policies for zero-trust security including MFA, device compliance, and location-based controls.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on Conditional Access policy | |
| policyId | No | Conditional Access policy ID for specific operations | |
| displayName | No | Display name for the policy | |
| description | No | Description of the policy | |
| state | No | Policy state | |
| conditions | No | Policy conditions | |
| grantControls | No | Grant controls | |
| sessionControls | No | Session controls |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a destructive, non-idempotent, mutable tool. The description adds value by specifying the resource type (Azure AD conditional access policies) and examples of controls (MFA, device compliance, location-based), which helps the agent understand what might be affected. However, it doesn't disclose critical behavioral details like authentication requirements, rate limits, or what 'destructive' specifically entails (e.g., policy deletion impacts).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It avoids unnecessary words and directly states what the tool does. However, it could be slightly more structured by separating the purpose from the examples for better readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's high complexity (8 parameters with nested objects, destructive hint), no output schema, and rich annotations, the description is somewhat incomplete. It covers the 'what' but lacks guidance on 'how' to use it effectively, error handling, or result interpretation. The annotations help, but for a tool with significant destructive potential, more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds minimal semantic context by mentioning 'MFA, device compliance, and location-based controls,' which loosely maps to grantControls.builtInControls and conditions.locations, but doesn't explain parameter relationships or usage patterns. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage Azure AD conditional access policies' with specific examples of what can be managed (MFA, device compliance, location-based controls). It uses the verb 'manage' which aligns with the multi-action capability indicated by the action parameter. However, it doesn't explicitly differentiate from sibling tools like 'manage_authentication_strengths' or 'manage_defender_policies' which might handle related security controls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions 'zero-trust security' context but doesn't specify prerequisites, appropriate scenarios, or exclusions. With many sibling tools for managing security policies (e.g., manage_defender_policies, manage_exchange_policies), the agent receives no help in choosing between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_cross_tenant_accessBDestructive
Manage cross-tenant access settings for B2B collaboration, including inbound/outbound trust settings and partner configurations.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on cross-tenant access settings | |
| tenantId | No | Partner tenant ID for specific operations | |
| inboundTrust | No | Inbound trust settings | |
| b2bCollaborationInbound | No | B2B collaboration inbound settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, readOnlyHint=false, and idempotentHint=false, which already inform the agent that this is a mutable, non-idempotent, potentially destructive operation. The description adds context by specifying 'inbound/outbound trust settings and partner configurations,' but doesn't elaborate on behavioral traits like rate limits, authentication needs, or what exactly gets destroyed (e.g., existing settings). No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It avoids redundancy and waste, though it could be slightly more structured by explicitly listing key actions or use cases. Every word contributes meaning, making it appropriately concise for a tool with complex parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters with nested objects, destructive hint, no output schema), the description is minimally adequate. It covers the high-level purpose but lacks details on output format, error handling, or specific scenarios for using different actions. With annotations providing safety cues and schema covering parameters, it meets basic needs but leaves gaps for an agent to infer full usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed descriptions for all parameters and nested objects. The description mentions 'inbound/outbound trust settings and partner configurations,' which aligns with parameters like 'inboundTrust' and 'tenantId,' but adds no significant semantic value beyond what the schema already provides. With high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage cross-tenant access settings for B2B collaboration, including inbound/outbound trust settings and partner configurations.' It specifies the verb ('manage'), resource ('cross-tenant access settings'), and scope ('B2B collaboration'), but doesn't explicitly differentiate from sibling tools like 'manage_conditional_access_policies' or 'manage_authentication_strengths' which might handle related security settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., admin permissions), when to choose specific actions like 'updateDefault' vs 'listPartners', or how it relates to sibling tools such as 'manage_conditional_access_policies' for access control. The context is implied through 'B2B collaboration' but lacks explicit usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_defender_policiesBDestructive
Manage Microsoft Defender for Office 365 policies including Safe Attachments, Safe Links, anti-phishing, and anti-malware.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on Defender policy | |
| policyType | Yes | Type of Defender policy | |
| policyId | No | Defender policy ID for specific operations | |
| displayName | No | Display name for the policy | |
| description | No | Description of the policy | |
| isEnabled | No | Whether the policy is enabled | |
| settings | No | Policy settings | |
| appliedTo | No | Policy application scope |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true (implying potential data loss), readOnlyHint=false, and idempotentHint=false. The description doesn't contradict these but adds minimal behavioral context beyond the generic 'manage' verb. It doesn't elaborate on the destructive nature, authentication needs, rate limits, or error handling, leaving the annotations to carry most of the behavioral disclosure burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It avoids redundancy and wastes no words, though it could be slightly more structured by separating policy examples with commas or bullets for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, nested objects, destructive operations) and lack of output schema, the description is minimally adequate. It identifies the resource scope but doesn't address return values, error conditions, or operational constraints. The annotations help, but more context would be beneficial for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema fully documents all 8 parameters and their nested structures. The description mentions policy types (Safe Attachments, Safe Links, etc.) which align with the policyType enum, but adds no additional semantic context beyond what the schema already provides. The baseline score of 3 is appropriate given the comprehensive schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'manage' and specifies the resource as 'Microsoft Defender for Office 365 policies' with examples of policy types (Safe Attachments, Safe Links, anti-phishing, anti-malware). This distinguishes it from other security policy tools like manage_security_alert_policies or manage_dlp_policies, though it doesn't explicitly contrast with siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, appropriate contexts, or exclusions, nor does it reference sibling tools like manage_exchange_policies or manage_security_alert_policies that might handle related security functions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_distribution_listsBDestructive
Manage Exchange distribution lists including creation, updates, member management, and settings configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on distribution list | |
| listId | No | Distribution list ID for existing list operations | |
| displayName | No | Display name for the distribution list | |
| emailAddress | No | Email address for the distribution list | |
| members | No | List of member email addresses | |
| settings | No | Distribution list settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide key behavioral hints (destructiveHint: true, readOnlyHint: false, etc.). The description adds context about the scope of operations (creation, updates, member management, settings configuration) which helps understand what 'manage' entails, but doesn't elaborate on permissions needed, rate limits, or specific destructive consequences beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It covers multiple aspects without unnecessary elaboration, though it could be slightly more structured by separating different action types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-action tool with 6 parameters, destructive annotations, and no output schema, the description is minimally adequate. It covers the scope but lacks details on error conditions, response format, or action-specific behaviors that would help an agent use it correctly given the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema fully documents all 6 parameters. The description mentions general categories (creation, updates, member management, settings) which loosely map to parameters but adds no specific syntax, format, or usage details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages Exchange distribution lists with specific actions (creation, updates, member management, settings configuration). It distinguishes this tool from siblings like manage_security_groups or manage_m365_groups by specifying Exchange distribution lists, but doesn't explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when to choose specific actions, or how this differs from similar tools like manage_security_groups or manage_m365_groups in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_dlp_incidentsB
Investigate and manage DLP policy violations and incidents including user notifications and remediation actions.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | DLP incident management action | |
| incidentId | No | DLP incident ID | |
| dateRange | No | Date range filter | |
| severity | No | Incident severity | |
| status | No | Incident status | |
| policyId | No | Associated policy ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false, covering basic safety. The description adds value by specifying actions like 'user notifications and remediation actions,' which imply side effects beyond data retrieval. However, it doesn't detail rate limits, authentication needs, or specific behavioral traits like what 'resolve' or 'escalate' entail operationally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It avoids redundancy and waste, though it could be slightly more structured by explicitly listing key actions. Overall, it's appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (6 parameters, nested objects, no output schema) and annotations covering basic hints, the description is adequate but incomplete. It lacks details on return values, error handling, or operational constraints, which are crucial for a management tool with multiple actions. The absence of an output schema increases the burden on the description, which it doesn't fully meet.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema fully documents all 6 parameters, including enums for 'action,' 'severity,' and 'status.' The description adds no parameter-specific information beyond the generic mention of 'investigate and manage,' so it meets the baseline but doesn't enhance understanding of parameter usage or interactions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'investigate and manage DLP policy violations and incidents' with specific actions like 'user notifications and remediation actions.' It distinguishes itself from sibling tools like 'manage_dlp_policies' by focusing on incidents rather than policies, though it doesn't explicitly contrast with other incident-related tools like 'manage_alerts.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions actions like 'list, get, resolve, escalate' but doesn't specify scenarios, prerequisites, or exclusions. Without context on sibling tools like 'manage_alerts' or 'search_audit_log,' the agent lacks direction on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_dlp_policiesBDestructive
Manage Data Loss Prevention policies to protect sensitive data across Exchange, SharePoint, OneDrive, and Teams.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | DLP policy management action | |
| policyId | No | DLP policy ID | |
| name | No | Policy name | |
| description | No | Policy description | |
| locations | No | Policy locations | |
| rules | No | Policy rules configuration | |
| settings | No | Policy settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, readOnlyHint=false, and idempotentHint=false, covering key behavioral traits. The description adds context by specifying the scope ('across Exchange, SharePoint, OneDrive, and Teams'), which is useful but does not elaborate on destructive effects, authentication needs, rate limits, or other operational details. It does not contradict annotations, so a baseline score is appropriate given the annotations provide core safety information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary elaboration. It avoids redundancy and wastes no words, making it easy for an agent to parse quickly. This optimal structure earns a high score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, nested objects, no output schema) and annotations that cover destructive and non-idempotent traits, the description is minimally adequate. It states the purpose and scope but lacks details on return values, error handling, or operational constraints. With annotations providing some behavioral context, it meets a basic threshold but leaves gaps for a tool with significant functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all parameters are documented in the schema itself. The description does not add any parameter-specific details beyond what the schema provides, such as explaining the 'action' enum values or interactions between parameters. With high schema coverage, the baseline score of 3 is justified, as the description does not compensate but also does not detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage Data Loss Prevention policies to protect sensitive data across Exchange, SharePoint, OneDrive, and Teams.' It specifies the verb ('manage'), resource ('Data Loss Prevention policies'), and scope ('across Exchange, SharePoint, OneDrive, and Teams'), but does not distinguish it from sibling tools like 'manage_dlp_incidents' or other policy management tools, which would require explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention sibling tools such as 'manage_dlp_incidents' for handling incidents or other policy management tools, nor does it specify prerequisites, exclusions, or contextual usage scenarios. This lack of guidance leaves the agent without direction on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_evidence_collectionBRead-onlyIdempotent
Collect and preserve compliance evidence including audit logs, configuration snapshots, and attestation records.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Evidence collection action | |
| evidenceType | No | Type of evidence to collect | |
| timeRange | No | Time range for evidence collection | |
| systems | No | Specific systems to collect evidence from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds context about 'preserving' evidence, which suggests archival or retention functionality beyond mere collection. However, it doesn't disclose rate limits, authentication needs, or specific preservation mechanisms that would enrich behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Collect and preserve compliance evidence') followed by illustrative examples. Every word contributes meaning without redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, nested objects, no output schema) and rich annotations, the description is adequate but incomplete. It covers the 'what' but lacks details on return values, error conditions, or operational constraints that would help an agent invoke it correctly in varied contexts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema fully documents all 4 parameters. The description implies evidence types and collection actions but adds no syntax, format, or semantic details beyond what the schema provides. The baseline score of 3 reflects adequate but minimal value addition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Collect and preserve compliance evidence' with specific examples (audit logs, configuration snapshots, attestation records). It distinguishes from siblings like 'search_audit_log' by emphasizing comprehensive collection and preservation, though it doesn't explicitly contrast with all similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'generate_audit_reports' or 'manage_compliance_assessments'. It mentions evidence collection generally but doesn't specify contexts, prerequisites, or exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_exchange_policiesBDestructive
Manage Exchange Online policies including mail flow rules, mobile device access, and organization-wide settings.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on Exchange policy | |
| policyType | Yes | Type of Exchange policy | |
| policyId | No | Exchange policy ID for specific operations | |
| displayName | No | Display name for the policy | |
| description | No | Description of the policy | |
| isDefault | No | Whether this is the default policy | |
| settings | No | Policy settings | |
| appliedTo | No | Policy application scope |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, covering the core safety profile. The description adds no behavioral context beyond what annotations provide—no mention of permissions required, rate limits, side effects, or what 'manage' entails operationally. However, it doesn't contradict annotations, so it meets the lowered bar with annotations present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It front-loads the core purpose and provides specific examples without unnecessary elaboration. Every element earns its place by clarifying scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, destructive tool with 8 parameters, nested objects, no output schema, and many sibling alternatives, the description is inadequate. It doesn't explain what 'manage' means operationally (CRUD actions via 'action' parameter), doesn't guide usage relative to siblings, and provides no behavioral context beyond annotations. The agent would struggle to use this tool correctly without trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 8 parameters. The description mentions policy types (mail flow rules, mobile device access, organization-wide settings) which loosely map to 'policyType' enum values, but adds no meaningful semantics beyond what the schema provides. With high schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('manage') and resource ('Exchange Online policies'), with specific examples of policy types (mail flow rules, mobile device access, organization-wide settings). It distinguishes from some siblings like 'manage_exchange_settings' by focusing on policies rather than general settings, though it doesn't explicitly differentiate from all policy-related tools like 'manage_dlp_policies'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, appropriate contexts, or exclusions. With many sibling tools managing different aspects of Microsoft 365 policies (e.g., 'manage_dlp_policies', 'manage_conditional_access_policies'), the agent receives no help in selecting the right tool for Exchange policy management.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_exchange_settingsBIdempotent
Manage Exchange Online settings including mailbox configuration, transport rules, and organization policies.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on Exchange settings | |
| settingType | Yes | Type of Exchange settings to manage | |
| target | No | User/Group ID for mailbox settings | |
| settings | No | Exchange configuration settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide key behavioral hints: readOnlyHint=false (supports writes), idempotentHint=true (safe to retry), destructiveHint=false (non-destructive). The description adds some context by listing the types of settings managed (mailbox, transport, organization), which helps clarify scope. However, it doesn't disclose important behavioral details like authentication requirements, rate limits, or what happens during updates. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. Every word contributes to understanding the tool's scope without redundancy. It's appropriately sized for a tool with a clear, broad function and doesn't waste space on details better covered elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters with nested objects, no output schema) and rich annotations, the description is minimally adequate. It outlines the scope but lacks details on return values, error conditions, or practical usage scenarios. The annotations cover safety and idempotency, but for a tool that can perform updates, more contextual guidance would be helpful. It meets the baseline for a tool with good structured data but doesn't fully compensate for the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in the schema itself. The description mentions 'mailbox configuration, transport rules, and organization policies,' which loosely maps to the settingType enum values but doesn't add meaningful semantics beyond what the schema provides. It doesn't explain parameter interactions or provide usage examples. With high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as managing Exchange Online settings with specific examples (mailbox configuration, transport rules, organization policies). It uses the verb 'manage' with the resource 'Exchange Online settings', making the purpose clear. However, it doesn't explicitly distinguish this tool from sibling tools like 'manage_exchange_policies' or 'manage_user_settings', which could handle overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, appropriate contexts, or exclusions. With many sibling tools that might handle related settings (e.g., 'manage_exchange_policies', 'manage_user_settings'), the lack of differentiation leaves the agent without clear usage guidelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_gap_analysisBRead-onlyIdempotent
Perform gap analysis to identify compliance deficiencies and generate remediation recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Gap analysis action | |
| analysisId | No | Analysis ID | |
| framework | Yes | Framework for gap analysis | |
| targetFramework | No | Target framework for cross-framework mapping | |
| scope | No | Analysis scope | |
| settings | No | Analysis settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, non-destructive, repeatable operation. The description adds context about generating 'remediation recommendations,' which suggests an analytical output, but doesn't disclose behavioral traits like rate limits, authentication needs, or what 'generate' entails (e.g., async vs. sync). No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It avoids redundancy and wastes no words, making it easy to parse. However, it could be slightly more structured by explicitly separating the action from the outcome for even clearer scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, nested objects, no output schema) and rich annotations, the description is adequate but incomplete. It covers the high-level purpose but lacks details on output format, error handling, or interaction patterns (e.g., that 'action' parameter drives different behaviors like 'generate' vs. 'get_results'). The annotations help, but the description should do more to guide usage in this multi-action tool context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters well-documented in the schema itself (e.g., action enum values, framework options, settings details). The description mentions 'compliance deficiencies' and 'remediation recommendations,' which loosely map to the 'settings' parameters like 'includeRecommendations,' but adds minimal semantic value beyond what the schema already provides. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Perform gap analysis to identify compliance deficiencies and generate remediation recommendations.' It specifies the verb 'perform gap analysis' and the outcome 'identify compliance deficiencies and generate remediation recommendations.' However, it doesn't explicitly distinguish this tool from sibling tools like 'manage_compliance_assessments' or 'manage_cis_compliance,' which might have overlapping domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, timing, or how it differs from sibling tools such as 'manage_compliance_assessments' or 'generate_audit_reports.' The agent must infer usage from the tool name and description alone, which is insufficient for optimal tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_graph_subscriptionsBDestructive
Manage webhook subscriptions for real-time change notifications from Microsoft Graph resources.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Subscription management action | |
| subscriptionId | No | Subscription ID for update/delete operations | |
| subscription | No | Subscription details for create/update | |
| updates | No | Updates for existing subscription |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a destructive, non-idempotent, open-world tool with write capabilities (readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: true). The description adds value by specifying that it handles 'real-time change notifications' and 'webhook subscriptions,' which clarifies the mutation context beyond the annotations. However, it doesn't disclose critical behavioral details like rate limits, error handling, or what specific resources are manageable, leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core functionality: 'Manage webhook subscriptions for real-time change notifications from Microsoft Graph resources.' It avoids redundancy and wastes no words, making it easy for an agent to parse quickly. Every part of the sentence contributes essential information without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, nested objects, no output schema) and rich annotations, the description is minimally adequate. It covers the purpose but lacks details on output format, error cases, or integration with sibling tools. Without an output schema, the description should ideally hint at return values or success indicators, but it doesn't, leaving the agent with incomplete context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters well-documented in the input schema. The description adds no additional parameter semantics beyond the schema's details, such as explaining the relationship between 'action' and other parameters or providing examples. Since the schema carries the full burden, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage webhook subscriptions for real-time change notifications from Microsoft Graph resources.' It specifies the verb ('manage'), resource ('webhook subscriptions'), and context ('Microsoft Graph resources'), making the function unambiguous. However, it doesn't explicitly differentiate this tool from sibling tools like 'manage_alerts' or 'manage_sharepoint_lists', which could also involve notifications or Graph resources, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as authentication requirements or permissions needed for Microsoft Graph access, nor does it compare it to sibling tools like 'execute_delta_query' or 'search_audit_log' that might offer overlapping functionality. Without any usage context or exclusions, the agent lacks direction on appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_identity_protectionADestructive
Monitor and manage Azure AD Identity Protection including risk detections, risky users, and risk remediation actions.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform | |
| riskDetectionId | No | Risk detection ID | |
| userId | No | User ID for risky user operations | |
| riskLevel | No | Filter by risk level | |
| riskState | No | Filter by risk state | |
| top | No | Number of results to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond what annotations provide. Annotations indicate destructiveHint=true (mutation operations) and readOnlyHint=false, but the description clarifies this includes both monitoring ('Monitor') and management actions ('manage'), specifically mentioning 'risk remediation actions' which implies destructive operations. This aligns with annotations while providing domain-specific context about what types of destructive actions are involved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that packs substantial information: domain, scope, and key functional areas. Every word earns its place with zero redundancy or fluff. It's appropriately sized for a multi-function tool and front-loads the most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, multiple action types, destructive operations) and the absence of an output schema, the description provides adequate but minimal context. It covers the tool's scope and destructive nature but doesn't explain return values, error conditions, or specific behavioral nuances of different actions. With annotations covering safety profile and schema covering parameters, the description meets minimum viable standards.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already documents all 6 parameters thoroughly. The description mentions 'risk detections, risky users, and risk remediation actions' which loosely maps to the 'action' parameter enum values, but adds no specific syntax, format, or additional semantic meaning beyond what's already in the schema. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Monitor and manage Azure AD Identity Protection including risk detections, risky users, and risk remediation actions.' It specifies the domain (Azure AD Identity Protection) and the main functional areas (risk detections, risky users, risk remediation). However, it doesn't explicitly differentiate this tool from potential sibling tools like 'manage_alerts' or 'manage_security_alert_policies' that might overlap in security monitoring.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, specific scenarios where this tool is appropriate, or how it differs from other security management tools in the sibling list. The agent must infer usage solely from the description and parameter schema without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_information_protection_policiesBDestructive
Manage Azure Information Protection policies for data classification, encryption, and rights management.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on information protection policy | |
| policyId | No | Information protection policy ID for specific operations | |
| displayName | No | Display name for the policy | |
| description | No | Description of the policy | |
| scope | No | Policy scope | |
| settings | No | Policy settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds context about what's being managed (data classification, encryption, rights management) but doesn't elaborate on destructive consequences, authentication requirements, rate limits, or error conditions beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a multi-action tool, though it could be slightly more specific about the management scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 6 parameters, nested objects, and destructive operations, the description provides basic purpose but lacks critical context. No output schema exists, so the description should ideally mention return values or success indicators. The combination of annotations and schema covers safety and parameters, but behavioral expectations remain underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema fully documents all 6 parameters. The description doesn't add any parameter-specific context beyond the schema's descriptions. The baseline score of 3 reflects adequate coverage through the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('manage') and resource ('Azure Information Protection policies') with specific domains ('data classification, encryption, and rights management'). It distinguishes from siblings like 'manage_defender_policies' or 'manage_dlp_policies' by specifying the AIP domain, but doesn't explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives is provided. The description doesn't mention prerequisites, appropriate contexts, or exclusions. With many sibling tools for policy management, this lack of differentiation leaves the agent guessing about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_intune_macos_appsBDestructive
Manage macOS application deployment including app assignments, updates, and installation requirements.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Intune macOS app management action | |
| appId | No | App ID for app-specific operations | |
| bundleId | No | macOS app bundle identifier | |
| name | No | Application name | |
| version | No | Application version | |
| assignmentGroups | No | Target groups for app deployment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, readOnlyHint=false, and idempotentHint=false, covering safety and idempotency. The description adds context about deployment actions (assignments, updates, installation requirements), which helps clarify the tool's behavior beyond annotations. However, it doesn't detail rate limits, authentication needs, or specific destructive effects (e.g., data loss from 'remove' action).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Manage macOS application deployment'). It avoids redundancy and wastes no words, though it could be slightly more structured (e.g., by listing key actions explicitly).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, destructive actions, no output schema), the description is minimally adequate. It covers the high-level purpose but lacks details on return values, error handling, or specific use cases. With annotations providing safety info, it meets basic needs but leaves gaps for effective agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing full parameter documentation. The description mentions 'app assignments, updates, and installation requirements,' which loosely maps to parameters like 'assignmentGroups' and 'action' values, but doesn't add significant meaning beyond the schema. With high coverage, the baseline is 3, and the description doesn't compensate with extra insights.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: managing macOS application deployment with specific actions like assignments, updates, and installation requirements. It specifies the resource (macOS apps) and scope (deployment management), but doesn't explicitly differentiate from sibling tools like 'manage_intune_windows_apps' or 'manage_intune_macos_compliance', which would be needed for a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools (e.g., 'manage_intune_windows_apps' for Windows apps or 'manage_intune_macos_devices' for device management), prerequisites, or exclusions. Usage is implied by the title but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_intune_macos_complianceBRead-onlyIdempotent
Assess macOS device compliance status and generate reports on policy adherence and security posture.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Intune macOS compliance action | |
| deviceId | No | Device ID for compliance assessment | |
| complianceType | No | Type of compliance check | |
| policies | No | Specific policy IDs to assess |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, non-destructive, repeatable operation. The description adds some context about 'assessing' and 'generating reports' which aligns with the read-only nature, but doesn't provide additional behavioral details like rate limits, authentication requirements, or what specific reports look like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise - a single sentence that efficiently communicates the core functionality without any wasted words. It's front-loaded with the main purpose and doesn't include unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations provide safety information (read-only, idempotent, non-destructive) and the schema has 100% coverage, the description covers the basic purpose adequately. However, without an output schema and with multiple action types available, more context about what different actions return would be helpful for a tool with this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already documents all 4 parameters thoroughly, including enums for 'action' and 'complianceType'. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline expectation but doesn't provide additional value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('assess' and 'generate reports') and resources ('macOS device compliance status', 'policy adherence and security posture'), making it easy to understand what it does. However, it doesn't explicitly differentiate from sibling tools like 'manage_intune_macos_devices' or 'manage_intune_windows_compliance', which would require more specific scope clarification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With many sibling tools available (like manage_intune_macos_devices, manage_intune_windows_compliance, manage_compliance_assessments), there's no indication of when this specific macOS compliance tool is appropriate versus other compliance or device management tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_intune_macos_devicesBDestructive
Manage macOS devices in Intune including enrollment, compliance policies, device actions, and inventory management.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Intune macOS device management action | |
| deviceId | No | Device ID for device-specific operations | |
| filter | No | OData filter for device listing | |
| enrollmentType | No | Enrollment type | |
| assignmentTarget | No | Assignment target |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds context by listing specific actions like 'wipe' and 'retire' that align with destructive operations, and mentions 'enrollment' and 'device actions' that imply mutations. It doesn't contradict annotations and provides useful behavioral details beyond them, though it lacks rate limit or auth requirement disclosures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads key functions. It avoids redundancy and wastes no words, though it could be slightly more structured by separating core actions for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, destructive actions, no output schema), the description is adequate but incomplete. It covers the scope and key actions but lacks details on return values, error handling, or dependencies. With annotations providing safety cues, it meets minimum viability but leaves gaps for an agent to infer behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds minimal semantics by implying the 'action' parameter includes operations like enrollment and device actions, but doesn't clarify parameter interactions (e.g., deviceId required for wipe but not list). Baseline 3 is appropriate as the schema carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages macOS devices in Intune with specific functions (enrollment, compliance policies, device actions, inventory management). It distinguishes from sibling tools like manage_intune_macos_apps or manage_intune_windows_devices by focusing on device management rather than apps or Windows devices. However, it doesn't explicitly contrast with manage_intune_macos_compliance or manage_intune_macos_policies, which handle overlapping aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., device enrollment status), exclusions (e.g., when not to use destructive actions), or refer to sibling tools for related tasks. The agent must infer usage from the action parameter alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_intune_macos_policiesBDestructive
Manage macOS configuration profiles and compliance policies for device security and management settings.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Intune macOS policy management action | |
| policyId | No | Policy ID for policy-specific operations | |
| policyType | Yes | Type of macOS policy | |
| name | No | Policy name | |
| description | No | Policy description | |
| settings | No | Policy configuration settings | |
| assignments | No | Policy assignments | |
| deploymentSettings | No | Deployment settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, readOnlyHint=false, and idempotentHint=false, covering key behavioral traits. The description adds minimal context beyond this, mentioning 'device security and management settings' but not detailing specific destructive effects (e.g., data loss on delete), authentication needs, or rate limits. It doesn't contradict annotations, but provides only basic supplemental information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the tool's purpose without unnecessary elaboration. It's appropriately sized for a multi-action tool, though it could be slightly more front-loaded with key distinctions. There's no wasted verbiage, but it lacks structural elements like bullet points for complex operations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, nested objects, no output schema) and annotations covering safety, the description is minimally adequate. It identifies the domain but doesn't explain return values, error conditions, or operational nuances like how 'assign' differs from 'deploy'. For a tool with destructive potential and rich parameters, more contextual detail would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters well-documented in the schema itself. The description doesn't add any parameter-specific information beyond what's in the schema, such as explaining how 'action' interacts with other parameters or clarifying 'settings' content. With high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage macOS configuration profiles and compliance policies for device security and management settings.' It specifies the resource (macOS policies) and the action (manage), but doesn't explicitly distinguish it from sibling tools like 'manage_intune_macos_compliance' or 'manage_intune_macos_devices', which would require more specific differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'manage_intune_macos_compliance' or 'manage_intune_windows_policies', nor does it specify prerequisites, appropriate contexts, or exclusions. The agent must infer usage from the tool name and parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_intune_windows_appsBDestructive
Manage Windows application deployment including Win32 apps, Microsoft Store apps, and Office 365 assignments.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Intune Windows app management action | |
| appId | No | App ID for app-specific operations | |
| appType | No | Windows app type | |
| name | No | Application name | |
| version | No | Application version | |
| assignmentGroups | No | Target groups for app deployment | |
| assignment | No | App assignment configuration | |
| appInfo | No | Application information |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, readOnlyHint=false, and idempotentHint=false, which the description does not contradict. However, the description adds minimal behavioral context beyond annotations—it hints at deployment actions but does not detail side effects like data changes, permission requirements, or rate limits. With annotations covering safety and idempotency, the description provides some value but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part ('manage Windows application deployment including...') directly contributes to understanding the tool's scope, making it appropriately sized and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, nested objects, destructive operations) and lack of an output schema, the description is insufficient. It does not explain return values, error conditions, or how different actions (e.g., 'deploy' vs 'remove') behave, leaving significant gaps for an AI agent to operate effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 8 parameters and nested objects. The description mentions 'deployment' and 'assignments', which loosely relate to parameters like 'assignment' and 'assignmentGroups', but adds no specific syntax, format, or usage details beyond what the schema provides. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('manage') and resource ('Windows application deployment'), specifying the scope includes Win32 apps, Microsoft Store apps, and Office 365 assignments. However, it does not explicitly differentiate from sibling tools like 'manage_intune_macos_apps' or 'manage_intune_windows_policies', which reduces it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as sibling tools for macOS apps or other Intune management functions. It lacks any mention of prerequisites, context, or exclusions, leaving the agent with no usage direction beyond the broad purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_intune_windows_complianceBRead-onlyIdempotent
Assess Windows device compliance status including BitLocker encryption, antivirus status, and security configurations.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Intune Windows compliance action | |
| deviceId | No | Device ID for compliance assessment | |
| complianceType | No | Type of compliance check | |
| policies | No | Specific policy IDs to assess | |
| complianceData | No | Compliance assessment data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, repeatable read operation. The description adds some behavioral context by specifying what gets assessed (BitLocker, antivirus, security configurations), but doesn't mention rate limits, authentication needs, or response format. With annotations covering the safety profile, this earns a baseline score for adding modest context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that immediately conveys the core purpose. Every word earns its place without redundancy or fluff. It's appropriately sized and front-loaded with the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (5 parameters with nested objects) and rich annotations (readOnlyHint, idempotentHint, destructiveHint), the description is adequate but has gaps. It doesn't explain the multi-action nature (get_status, update_policy, etc.) or output format, though annotations help with safety. Without an output schema, more guidance on return values would be beneficial for a tool with this parameter complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description mentions 'BitLocker encryption, antivirus status, and security configurations,' which loosely maps to some complianceType values and complianceData fields, but adds minimal semantic value beyond what the schema provides. The baseline of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Assess Windows device compliance status including BitLocker encryption, antivirus status, and security configurations.' It specifies the verb 'assess' and resource 'Windows device compliance status' with concrete examples. However, it doesn't distinguish this tool from its sibling 'manage_intune_macos_compliance' or other compliance-related tools, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, timing considerations, or differentiate from sibling tools like 'manage_intune_macos_compliance' or 'manage_compliance_assessments.' The agent must infer usage solely from the tool name and description without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_intune_windows_devicesBDestructive
Manage Windows devices in Intune including enrollment, autopilot deployment, device actions, and health monitoring.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Intune Windows device management action | |
| deviceId | No | Device ID for device-specific operations | |
| filter | No | OData filter for device listing | |
| enrollmentType | No | Windows enrollment type | |
| assignmentTarget | No | Assignment target | |
| bitlockerSettings | No | BitLocker configuration |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds some behavioral context by listing specific action types (including destructive ones like wipe, retire, autopilot_reset), which complements the destructiveHint annotation. However, it doesn't provide additional behavioral details like authentication requirements, rate limits, side effects, or error conditions beyond what annotations cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that packs substantial information into 15 words. It's front-loaded with the core purpose and includes specific examples. There's no wasted language, though it could potentially benefit from slightly more structure for the different action categories.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 6 parameters, nested objects, no output schema, and destructiveHint=true, the description provides adequate but minimal context. It covers the scope (Windows devices in Intune) and action categories, but doesn't address output format, error handling, or operational constraints. Given the rich schema coverage (100%) and clear annotations, the description meets minimum viable standards but leaves room for more comprehensive guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents all 6 parameters thoroughly with descriptions and enums. The description doesn't add any parameter-specific information beyond implying the 'action' parameter includes the listed categories. It doesn't explain parameter relationships, dependencies, or usage patterns that aren't already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages Windows devices in Intune with specific action categories (enrollment, autopilot deployment, device actions, health monitoring). It distinguishes from sibling tools like manage_intune_macos_devices by specifying Windows devices, but doesn't explicitly differentiate from other Intune Windows tools (apps, compliance, policies). The verb 'manage' is somewhat broad but the listed categories provide good specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over manage_intune_windows_apps, manage_intune_windows_compliance, or manage_intune_windows_policies. There's no indication of prerequisites, dependencies, or typical use cases beyond the broad categories listed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_intune_windows_policiesBDestructive
Manage Windows configuration profiles and compliance policies including security baselines and update rings.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Intune Windows policy management action | |
| policyId | No | Policy ID for policy-specific operations | |
| policyType | Yes | Type of Windows policy | |
| name | No | Policy name | |
| description | No | Policy description | |
| settings | No | Policy configuration settings | |
| assignments | No | Policy assignments | |
| deploymentSettings | No | Deployment settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a destructive, non-idempotent, non-readonly tool. The description adds minimal behavioral context beyond this - it mentions 'manage' which implies both read and write operations, consistent with annotations. However, it doesn't provide important behavioral details like authentication requirements, rate limits, side effects of destructive operations, or what happens during policy assignment/deployment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a tool with comprehensive schema documentation and annotations. Every word earns its place by specifying the resource type and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 8 parameters, nested objects, destructive operations, and no output schema, the description is insufficient. It doesn't explain return values, error conditions, or the relationships between different actions and parameters. The agent must rely entirely on the input schema and annotations, missing important contextual information about how this tool behaves in practice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents all 8 parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema. It mentions 'configuration profiles and compliance policies' which loosely maps to policyType, but provides no additional syntax, format, or usage guidance for any parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as managing Windows configuration profiles and compliance policies, specifying the resource (Windows policies) and scope (including security baselines and update rings). It distinguishes from some siblings like manage_intune_macos_policies by specifying Windows, but doesn't differentiate from other Windows policy tools like manage_intune_windows_compliance or manage_defender_policies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when to choose this over other Windows policy tools (like manage_intune_windows_compliance or manage_defender_policies), or any context for selecting among the 7 different actions available. The agent must infer usage from the action parameter alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_m365_groupsBDestructive
Manage Microsoft 365 groups for team collaboration with shared resources like mailbox, calendar, and files.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on M365 group | |
| groupId | No | M365 group ID for existing group operations | |
| displayName | No | Display name for the M365 group | |
| description | No | Description of the M365 group | |
| owners | No | List of owner email addresses | |
| members | No | List of member email addresses | |
| settings | No | M365 group settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a destructive, non-idempotent, non-read-only tool. The description adds minimal context by mentioning 'shared resources like mailbox, calendar, and files,' which hints at the scope of changes. However, it doesn't elaborate on permissions needed, rate limits, or specific behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary details. It's appropriately sized for a tool with comprehensive schema documentation, earning its place by summarizing the tool's scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, destructive operations) and lack of output schema, the description is minimally adequate. It covers the high-level purpose but doesn't address behavioral details like error handling or response formats, which would be helpful given the annotations indicate destructive actions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 7 parameters. The description adds no parameter-specific information beyond implying general management of groups with shared resources. It doesn't explain parameter interactions or usage nuances, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage Microsoft 365 groups for team collaboration with shared resources like mailbox, calendar, and files.' It specifies the resource (M365 groups) and general action (manage), though it doesn't differentiate from sibling tools like 'manage_security_groups' or 'manage_distribution_lists' beyond mentioning shared resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions 'team collaboration with shared resources' but doesn't specify prerequisites, exclusions, or compare it to sibling tools like 'manage_security_groups' or 'manage_teams_policies' that might overlap in functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_named_locationsADestructive
Manage Conditional Access named locations including IP address ranges and country/region locations for location-based access control.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on named locations | |
| locationId | No | Named location ID for specific operations | |
| displayName | No | Display name for the location | |
| locationType | No | Type of named location | |
| isTrusted | No | Whether to mark IP ranges as trusted | |
| ipRanges | No | IP ranges for IP-based named location | |
| countriesAndRegions | No | ISO 3166-1 alpha-2 country codes (e.g., ["US", "CA"]) | |
| includeUnknownCountriesAndRegions | No | Include unknown countries/regions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable context beyond the annotations. While annotations indicate this is a non-readOnly, non-idempotent, destructive tool, the description clarifies the specific domain (Conditional Access) and resource types (IP ranges, country/region locations) being managed. This helps the agent understand what kind of destructive operations might occur (e.g., modifying access control configurations). No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the tool's scope and purpose without unnecessary words. It's front-loaded with the core functionality and includes specific examples that add value. Every element earns its place, making it highly concise yet informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, destructive operations) and lack of output schema, the description is adequate but has gaps. It clearly defines what the tool manages but doesn't address behavioral aspects like error conditions, permissions required, or what the tool returns. With annotations covering safety profile and schema covering parameters, the description provides a solid foundation but could better prepare the agent for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents all 8 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. However, it does provide high-level context about what 'named locations' encompass, which helps frame the parameter usage. Baseline 3 is appropriate when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('manage') and resources ('Conditional Access named locations'), including concrete examples ('IP address ranges and country/region locations') and the functional context ('location-based access control'). It effectively distinguishes this tool from its many siblings by focusing specifically on named locations rather than other Conditional Access or security management aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. While it mentions 'Conditional Access named locations,' it doesn't clarify whether this is the primary tool for this function or how it relates to sibling tools like 'manage_conditional_access_policies' or other security management tools. There are no explicit when/when-not instructions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_offboardingBDestructive
Automate user offboarding processes including account disablement, license removal, data backup, and access revocation.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Offboarding process action | |
| userId | Yes | User ID or UPN to offboard | |
| options | No | Offboarding options |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=true, indicating this is a non-read-only, non-idempotent, destructive operation. The description adds context by listing specific destructive actions (account disablement, license removal, access revocation) and mentions data backup, which aligns with annotations. However, it doesn't disclose additional behavioral traits like rate limits, authentication needs, error handling, or what 'automate' entails beyond the listed actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Automate user offboarding processes') followed by specific examples. There's no wasted verbiage, and it's appropriately sized for a tool with clear annotations and schema. However, it could be slightly more structured by separating guidelines from purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (destructive, multi-action with nested parameters) and lack of output schema, the description is moderately complete. It covers the high-level scope but misses critical details: no output information, no error handling, no prerequisites, and minimal guidance on parameter usage. Annotations help with safety profile, but for a destructive tool, more context is needed to ensure correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters (action, userId, options with sub-properties). The description implies parameters through terms like 'user' (mapping to userId) and 'processes' (mapping to action), but adds no meaningful semantics beyond what the schema provides. For example, it doesn't explain how 'start', 'check', 'complete' actions differ or interact with the options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('automate', 'disablement', 'removal', 'backup', 'revocation') and resources ('user offboarding processes', 'account', 'license', 'data', 'access'). It distinguishes itself from siblings by focusing on offboarding rather than other management tasks like backup_policies or manage_user_settings. However, it doesn't explicitly differentiate from potential overlapping tools like manage_user_settings which might handle user status changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, timing considerations, or sibling tools that might be relevant (e.g., manage_user_settings for user status changes or backup_policies for data handling). The agent must infer usage from the purpose alone, which is insufficient for a tool with destructive potential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_retention_policiesBDestructive
Manage retention policies for content across Exchange, SharePoint, OneDrive, and Teams with lifecycle rules.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on retention policy | |
| policyId | No | Retention policy ID for specific operations | |
| isEnabled | No | Whether the policy is enabled | |
| locations | No | Locations where the policy applies | |
| description | No | Description of the retention policy | |
| displayName | No | Display name for the retention policy | |
| retentionSettings | Yes | Retention policy settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true; description adds 'with lifecycle rules' but no further behavioral context like irreversible actions or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence front-loaded with key resource and scope; concise but could be structured with bullet points for actions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 7 parameters including nested objects and no output schema, the description provides a high-level overview but lacks details like available actions or behavior of nested settings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions; description adds no extra meaning beyond the schema's documentation, thus baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Manage', resource 'retention policies', and scope 'across Exchange, SharePoint, OneDrive, and Teams', distinguishing it from sibling tools like manage_exchange_policies or manage_sharepoint_policies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs siblings, no examples of when not to use, and no reference to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_security_alert_policiesCDestructive
Manage security alert policies for monitoring threats, suspicious activities, and compliance violations across Microsoft 365.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on security alert policy | |
| policyId | No | Security alert policy ID for specific operations | |
| displayName | No | Display name for the policy | |
| description | No | Description of the policy | |
| category | No | Alert category | |
| severity | No | Alert severity | |
| isEnabled | No | Whether the policy is enabled | |
| conditions | No | Alert conditions | |
| actions | No | Alert actions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=true, which the description does not contradict. The description adds context by mentioning 'monitoring threats, suspicious activities, and compliance violations,' which hints at the tool's scope, but it fails to disclose critical behavioral traits like authentication needs, rate limits, or specific destructive effects (e.g., deletion of policies). With annotations covering safety aspects, the description provides some value but lacks detailed behavioral insights.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently states the tool's purpose without unnecessary details. It is front-loaded and avoids redundancy, making it appropriately concise. However, it could be slightly more structured by explicitly listing key actions or use cases to enhance clarity without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity with 9 parameters, nested objects, and no output schema, the description is insufficient. It does not explain return values, error handling, or the interplay between parameters like 'action' and 'policyId'. With annotations providing some safety context but lacking output details, the description should do more to guide the agent in using this multifaceted tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters well-documented in the schema. The description does not add any meaningful parameter semantics beyond what the schema provides, such as explaining how 'action' interacts with other parameters or detailing policy lifecycle. Given the high schema coverage, the baseline score of 3 is appropriate, as the description does not compensate but also does not detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool manages security alert policies for monitoring threats, suspicious activities, and compliance violations across Microsoft 365, which provides a general purpose. However, it lacks specificity about the exact operations (list, get, create, update, delete, enable, disable) and does not differentiate from sibling tools like manage_alerts or manage_defender_policies, making it vague in distinguishing its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or specific contexts for use, such as when to choose this over manage_alerts or manage_defender_policies. This absence of usage instructions leaves the agent without direction on appropriate application.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_security_groupsBDestructive
Manage Azure AD security groups for access control, including group creation, membership, and security settings.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on security group | |
| groupId | No | Security group ID for existing group operations | |
| displayName | No | Display name for the security group | |
| description | No | Description of the security group | |
| members | No | List of member email addresses | |
| settings | No | Security group settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, readOnlyHint=false, and idempotentHint=false, which already inform the agent about mutation capabilities and potential data loss. The description adds minimal behavioral context beyond this - it mentions 'access control' implications but doesn't elaborate on authentication needs, rate limits, or specific destructive consequences. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It avoids unnecessary elaboration while covering the key aspects of what the tool manages. However, it could be slightly more structured by separating scope elements for better readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 6 parameters, destructive operations, and no output schema, the description is minimally adequate. It identifies the resource and general scope but lacks details about error conditions, response format, or operational constraints that would help the agent use it correctly. The annotations provide safety information, but more context about this multi-action tool would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already documents all 6 parameters thoroughly. The description adds no parameter-specific information beyond the generic 'including group creation, membership, and security settings' which loosely maps to action types but provides no additional syntax, format, or constraint details. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage Azure AD security groups for access control, including group creation, membership, and security settings.' It specifies the resource (Azure AD security groups) and the scope of operations (creation, membership, security settings). However, it doesn't explicitly differentiate from sibling tools like 'manage_m365_groups' or 'manage_distribution_lists' which might handle similar group management tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when-not-to-use scenarios, or refer to sibling tools like 'manage_m365_groups' for comparison. The agent must infer usage from the generic 'manage' term and parameter schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_sensitivity_labelsBDestructive
Manage sensitivity labels for information protection including encryption, content marking, and classification policies.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on sensitivity label | |
| labelId | No | Sensitivity label ID for specific operations | |
| tooltip | No | Tooltip text for the label | |
| priority | No | Label priority (higher number = higher priority) | |
| settings | No | Label settings | |
| isEnabled | No | Whether the label is enabled | |
| description | No | Description of the sensitivity label | |
| displayName | No | Display name for the sensitivity label |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true and readOnlyHint=false, which already convey mutability. The description adds no further context on potential side effects or behavioral specifics beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that front-loads the main purpose. Could be more concise by omitting the list of features, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, nested objects, and multiple actions (list, get, create, update, delete, publish), the description is too brief. It does not explain the different actions or return values, leaving significant gaps despite the schema covering parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter and nested property documented. The description adds no additional meaning beyond referencing 'encryption, content marking, and classification policies' which map to schema properties.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages sensitivity labels for information protection, listing key features. However, it does not differentiate from sibling tools like manage_dlp_policies or manage_information_protection_policies, which could cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. No explicit context, prerequisites, or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_service_principalsBDestructive
Manage service principals for application access including permissions, credentials, and enterprise applications.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Service principal management action | |
| spId | No | Object ID of the Service Principal | |
| ownerId | No | Object ID of the user to add/remove as owner | |
| filter | No | OData filter string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, readOnlyHint=false, and idempotentHint=false, covering safety and idempotency. The description adds context by mentioning 'permissions, credentials, and enterprise applications,' which hints at sensitive operations beyond what annotations provide. However, it doesn't detail specific behaviors like rate limits, authentication needs, or side effects, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It's appropriately sized for the tool's complexity, though it could be slightly more structured by separating key aspects like actions or outcomes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, no output schema, destructive annotations), the description is minimally complete. It covers the purpose and scope but lacks details on return values, error handling, or operational context. With annotations providing safety info, it's adequate but has clear gaps for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters documented in the schema. The description doesn't add any parameter-specific details beyond the schema, such as examples or constraints. The baseline score of 3 reflects adequate coverage by the schema alone, with no extra value from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage service principals for application access including permissions, credentials, and enterprise applications.' It specifies the verb ('manage'), resource ('service principals'), and scope ('application access'), but doesn't explicitly differentiate from sibling tools like 'manage_azure_ad_apps' or 'manage_authentication_strengths' which might have overlapping domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or exclusions, nor does it reference any sibling tools for comparison. The agent must infer usage solely from the tool name and description without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_teams_policiesBDestructive
Manage Microsoft Teams policies for messaging, meetings, calling, apps, and live events across the organization.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on Teams policy | |
| policyType | Yes | Type of Teams policy | |
| policyId | No | Teams policy ID for specific operations | |
| displayName | No | Display name for the policy | |
| description | No | Description of the policy | |
| settings | No | Policy settings | |
| assignTo | No | Policy assignment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, idempotentHint=false, and destructiveHint=true, indicating mutable and potentially destructive operations. The description adds value by specifying the policy domains and organizational scope, but doesn't elaborate on behavioral traits like side effects, permissions needed, or rate limits beyond what annotations imply. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads key information: action, resource, domains, and scope. There's no wasted verbiage, and it directly communicates the tool's purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, nested objects, no output schema) and annotations covering safety profile, the description is adequate but incomplete. It lacks guidance on usage, output expectations, or error handling, which could hinder an agent's ability to invoke it correctly in varied contexts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed parameter descriptions in the schema itself. The description adds minimal semantic context by listing policy types (messaging, meetings, calling, apps, live events), which partially maps to the 'policyType' enum but doesn't fully explain parameter interactions or usage. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('manage') and resource ('Microsoft Teams policies'), and specifies the policy domains (messaging, meetings, calling, apps, live events) and scope ('across the organization'). However, it doesn't distinguish this tool from sibling tools like 'manage_exchange_policies' or 'manage_conditional_access_policies' beyond the Teams focus, missing explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when to choose this over other policy management tools, or any contextual constraints. The agent must infer usage from the tool name and parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_user_settingsBIdempotent
Manage user account settings including profile information, mailbox settings, licenses, and authentication methods.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on user settings | |
| userId | Yes | User ID or UPN | |
| settings | No | User settings to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide key behavioral hints (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the description doesn't need to repeat these. However, it adds useful context about what types of settings can be managed (profile, mailbox, licenses, authentication), which helps the agent understand scope. No contradictions with annotations exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose and provides specific examples of what can be managed. Every word earns its place with no redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters with nested objects, no output schema), the description provides adequate context about scope but lacks details on usage scenarios, error conditions, or return values. With annotations covering safety and idempotency, it's minimally viable but could better address when to use this versus sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing clear documentation for all parameters (action, userId, settings). The description adds marginal value by implying the 'settings' parameter covers the listed categories (profile, mailbox, licenses, authentication), but doesn't provide syntax or format details beyond what the schema already specifies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: managing user account settings with specific categories listed (profile information, mailbox settings, licenses, authentication methods). It uses a specific verb ('manage') and identifies the resource ('user account settings'), but doesn't distinguish this from sibling tools like 'manage_authentication_strengths' or 'manage_identity_protection' that might overlap with authentication aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for choosing between 'get' and 'update' actions, or how it differs from sibling tools like 'manage_authentication_strengths' or 'manage_security_groups' that might handle related user management tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oauth_authorizeBIdempotent
Manage OAuth 2.0 authorization for user-delegated access to OneDrive and SharePoint files with secure token handling.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | OAuth action: get authorization URL, exchange code for token, refresh token, or revoke access | |
| scopes | No | OAuth scopes to request (e.g., Files.ReadWrite, Sites.ReadWrite.All) | |
| state | No | State parameter for CSRF protection | |
| code | No | Authorization code to exchange for access token | |
| refreshToken | No | Refresh token to exchange for new access token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only (readOnlyHint: false), idempotent (idempotentHint: true), and non-destructive (destructiveHint: false). The description adds some context by mentioning 'secure token handling,' which implies security considerations, but it doesn't elaborate on behavioral traits like rate limits, authentication requirements, or what 'manage' entails beyond the schema's actions. It doesn't contradict annotations, but it provides minimal additional behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the tool's purpose and scope without unnecessary words. It's front-loaded with key information ('Manage OAuth 2.0 authorization') and includes relevant details ('user-delegated access to OneDrive and SharePoint files with secure token handling') that earn their place. There's no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of OAuth management with 5 parameters and no output schema, the description is somewhat incomplete. It covers the high-level purpose but lacks details on expected outputs, error handling, or how the actions (e.g., 'revoke') interact with the system. The annotations provide safety hints, but more context on behavioral outcomes would help, especially since there's no output schema to clarify return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear documentation for all parameters (e.g., 'action' with enum values, 'scopes' with examples). The description doesn't add any parameter-specific details beyond what the schema provides, such as explaining how scopes relate to OneDrive/SharePoint or the significance of the 'state' parameter. Given the high schema coverage, a baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't need to heavily.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage OAuth 2.0 authorization for user-delegated access to OneDrive and SharePoint files with secure token handling.' It specifies the verb ('manage'), resource ('OAuth 2.0 authorization'), and scope ('OneDrive and SharePoint files'), making it easy to understand. However, it doesn't explicitly differentiate from sibling tools like 'manage_authentication_strengths' or 'call_microsoft_api', which might also involve authentication or API calls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions the general context ('user-delegated access to OneDrive and SharePoint files') but doesn't specify prerequisites, when to choose this over other authentication methods, or how it relates to sibling tools like 'call_microsoft_api' or 'manage_authentication_strengths'. This leaves the agent without clear usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_audit_logBRead-onlyIdempotent
Search and analyze Azure AD unified audit logs for security events, user activities, and compliance monitoring.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | OData filter string (e.g., 'activityDateTime ge 2024-01-01T00:00:00Z') | |
| top | No | Maximum number of records to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a safe, read-only, idempotent operation (readOnlyHint: true, destructiveHint: false, idempotentHint: true). The description adds some context by specifying the resource ('Azure AD unified audit logs') and analysis purpose, but doesn't disclose behavioral traits like rate limits, authentication needs, or pagination behavior beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It's appropriately sized for a tool with good schema coverage and annotations, though it could be slightly more structured with usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (search/analysis function), rich annotations (covering safety profile), and 100% schema coverage, the description is adequate but has gaps. It lacks output format details (no output schema) and doesn't provide usage guidance relative to siblings, making it minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters ('filter' and 'top') well-documented in the schema. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search and analyze Azure AD unified audit logs' with specific domains ('security events, user activities, and compliance monitoring'). It distinguishes from most siblings by focusing on audit logs, though it doesn't explicitly differentiate from 'generate_audit_reports' which might be related.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'generate_audit_reports' or 'execute_graph_search' that might overlap, nor does it specify prerequisites or appropriate contexts beyond the general domains listed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
55 tool updates
v1.0.0- First observed
backup_policies - First observed
call_microsoft_api - First observed
execute_delta_query - First observed
execute_graph_batch - First observed
execute_graph_search - First observed
generate_audit_reports - First observed
generate_html_report - First observed
generate_powerpoint_presentation - First observed
generate_professional_report - First observed
generate_word_document - First observed
manage_alerts - First observed
manage_authentication_strengths - First observed
manage_azure_ad_apps - First observed
manage_azure_ad_devices - First observed
manage_azure_ad_roles - First observed
manage_cis_compliance - First observed
manage_compliance_assessments - First observed
manage_compliance_frameworks - First observed
manage_compliance_monitoring - First observed
manage_conditional_access_policies - First observed
manage_cross_tenant_access - First observed
manage_defender_policies - First observed
manage_distribution_lists - First observed
manage_dlp_incidents - First observed
manage_dlp_policies - First observed
manage_evidence_collection - First observed
manage_exchange_policies - First observed
manage_exchange_settings - First observed
manage_gap_analysis - First observed
manage_graph_subscriptions - First observed
manage_identity_protection - First observed
manage_information_protection_policies - First observed
manage_intune_macos_apps - First observed
manage_intune_macos_compliance - First observed
manage_intune_macos_devices - First observed
manage_intune_macos_policies - First observed
manage_intune_windows_apps - First observed
manage_intune_windows_compliance - First observed
manage_intune_windows_devices - First observed
manage_intune_windows_policies - First observed
manage_m365_groups - First observed
manage_named_locations - First observed
manage_offboarding - First observed
manage_retention_policies - First observed
manage_security_alert_policies - First observed
manage_security_groups - First observed
manage_sensitivity_labels - First observed
manage_service_principals - First observed
manage_sharepoint_governance_policies - First observed
manage_sharepoint_lists - First observed
manage_sharepoint_sites - First observed
manage_teams_policies - First observed
manage_user_settings - First observed
oauth_authorize - First observed
search_audit_log
TDQS
Scored across 55 tools
Many tools share the same manage_* prefix and cover overlapping domains, such as compliance assessments/monitoring/frameworks/gap analysis, Exchange settings/policies, and report generation. Clusters like DLP, Defender, and security alert policies further blur boundaries, making it difficult for an agent to reliably select the right tool.
Most tools follow a consistent manage_<area> pattern in snake_case, and the verb-noun construction is generally predictable. Minor deviations like backup_policies, oauth_authorize, call_microsoft_api, and execute_delta_query break the pattern but remain readable.
With 55 tools, the server is extremely overloaded for a single MCP server. Many sub-areas such as compliance, reporting, and Intune could be consolidated into fewer, broader tools, and the sheer volume creates significant selection overhead for agents.
The surface covers a broad range of Microsoft 365 admin, security, and compliance tasks, but it has notable gaps in lifecycle coverage such as user creation, explicit deletion for groups/apps, and deeper Teams/OneDrive content management. The numerous compliance and reporting tools partially compensate but do not deliver complete CRUD coverage across the stated domain.
Maintenance
Related MCP Connectors
Manage Microsoft 365 email, calendar, contacts and inbox rules via the Graph API with OAuth 2.0.
Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Unified gateway exposing 150+ tools across all NexGenData MCP servers via one endpoint.
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceProvides comprehensive management of Microsoft 365 services including Exchange, SharePoint, Teams, Azure AD, Intune device management, security & compliance frameworks, and universal access to 1000+ Microsoft Graph API endpoints with advanced features like batch operations, delta queries, and real-time webhooks.5015-
- FlicenseAqualityBmaintenanceProvides direct access to Microsoft Graph API with multi-tenant account management, allowing users to interact with Microsoft 365 services across multiple tenants through a single flexible graph-request tool.713-
- -licenseNot gradedqualityNot gradedmaintenanceProvides access to Microsoft Teams, Outlook, Calendar, and SharePoint via the Microsoft Graph API, enabling natural language interactions to read and manage messages, emails, events, and files.1-
- AlicenseCqualityCmaintenanceEnables AI assistants to interact with Microsoft 365 and Office services through the Microsoft Graph API, providing tools for email, calendar, files, Teams, SharePoint, and more with configurable permissions and output formats.188MIT