BOD-25-01-CSA-Microsoft-Policy-MCP
This server enables implementation and management of CISA BOD 25-01 security controls for Microsoft 365 environments through the following capabilities:
Identity & Access Management
Block legacy authentication (MS.AAD.1.1v1)
Block high-risk users and sign-ins (MS.AAD.2.1v1, MS.AAD.2.3v1)
Enforce phishing-resistant MFA for all users (MS.AAD.3.1v1) and alternative methods (MS.AAD.3.2v1)
Configure Microsoft Authenticator context (MS.AAD.3.3v1)
Enforce privileged MFA (MS.AAD.3.6v1)
Application Security
Restrict app registration and consent to admins (MS.AAD.5.1v1, MS.AAD.5.2v1)
Configure admin consent workflow (MS.AAD.5.3v1)
Block group owner consent (MS.AAD.5.4v1)
Password Policy
Disable password expiration (MS.AAD.6.1v1)
Role Management
Configure Global Admin assignments (MS.AAD.7.1v1)
Enforce granular roles (MS.AAD.7.2v1)
Enforce cloud-only accounts for privileged users (MS.AAD.7.3v1)
Enforce PAM system (MS.AAD.7.5v1)
Configure Global Admin approval (MS.AAD.7.6v1)
Configure role and admin alerts (MS.AAD.7.7v1, MS.AAD.7.8v1)
Monitoring & Compliance
Get current policy status of all CISA M365 security policies
Used for environment variable configuration to store tenant, client IDs, and secrets for authentication with Microsoft Graph API
Used for data flow diagrams to illustrate the architecture and component interactions of the MCP server
The runtime environment required to run the MCP server, with version 18.x or higher specifically listed as a prerequisite
Used for implementing the MCP server with type-safe argument validation and API interactions with Microsoft Graph
Click on "Install 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., "@BOD-25-01-CSA-Microsoft-Policy-MCPshow me the current MFA configuration status"
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.
CISA M365 MCP Server
A Model Context Protocol (MCP) server implementing CISA Binding Operational Directive 25-01 security controls for Microsoft 365 (Azure AD/Entra ID).
Table of Contents
Related MCP server: SharePoint MCP Server
Overview
This MCP server provides tools for configuring and managing Microsoft 365 security settings in accordance with BOD 25-01 requirements. It integrates with Microsoft Graph API to enforce security controls, monitor compliance, and provide detailed reporting.
Key Features
Legacy authentication controls
Risk-based access controls
Multi-factor authentication management
Application registration and consent controls
Password policy management
Privileged role management
Cloud-only account enforcement
PAM system integration
Comprehensive compliance reporting
Token-based authentication
Type-safe argument validation
Detailed error handling and logging
Security Controls
MS.AAD.1.1v1
Due Date: 06/20/2025
Block legacy authentication:
Disables legacy authentication protocols
Reduces attack surface
Improves security posture
Implementation details:
await graphClient
.api('/policies/authenticationMethodsPolicy')
.patch({
allowLegacyAuthentication: false,
blockLegacyAuthenticationMethods: true,
});MS.AAD.2.1v1 & MS.AAD.2.3v1
Due Date: 06/20/2025
Block high-risk users and sign-ins:
Blocks users detected as high risk
Blocks sign-ins detected as high risk
Leverages Microsoft's threat intelligence
Implementation details:
await graphClient
.api('/policies/identitySecurityDefaultsEnforcementPolicy')
.patch({
blockHighRiskUsers: true,
riskLevelForBlocking: 'high',
});MS.AAD.3.1v1, MS.AAD.3.2v1, MS.AAD.3.3v1
Due Date: 06/20/2025
MFA configuration:
Enforces phishing-resistant MFA
Configures alternative MFA methods
Shows login context in Microsoft Authenticator
Implementation details:
await graphClient
.api('/policies/authenticationMethodsPolicy')
.patch({
policies: {
fido2: {
isEnabled: true,
isSelfServiceRegistrationAllowed: true,
},
windowsHelloForBusiness: {
isEnabled: true,
isSelfServiceRegistrationAllowed: true,
},
},
});MS.AAD.5.1v1, MS.AAD.5.2v1, MS.AAD.5.3v1, MS.AAD.5.4v1
Due Date: 06/20/2025
Application controls:
Restricts app registration to admins
Restricts app consent to admins
Configures admin consent workflow
Blocks group owner consent
Implementation details:
await graphClient
.api('/policies/applicationRegistrationManagement')
.patch({
restrictAppRegistration: true,
restrictNonAdminUsers: true,
});MS.AAD.6.1v1
Due Date: 06/20/2025
Password policy:
Disables password expiration
Follows modern security best practices
Implementation details:
await graphClient
.api('/policies/passwordPolicy')
.patch({
passwordExpirationPolicy: {
passwordExpirationDays: 0,
neverExpire: true,
},
});MS.AAD.7.1v1 through MS.AAD.7.8v1
Due Date: 06/20/2025
Privileged role management:
Limits Global Administrator count
Enforces granular roles
Requires cloud-only accounts
Enforces PAM system usage
Configures approval workflows
Sets up alerting
Implementation details:
await graphClient
.api('/policies/roleManagementPolicies')
.patch({
enforceGranularRoles: true,
blockGlobalAdminForGeneralUse: true,
requireApprovalForGlobalAdmin: true,
});Architecture
Components
Server Class
Handles MCP protocol implementation
Manages tool registration and execution
Implements error handling and logging
Authentication
Token-based authentication with Microsoft Graph API
Automatic token refresh
Secure credential management
Graph Client
Wrapper around Microsoft Graph API
Type-safe request/response handling
Retry logic and error handling
Tools
Legacy authentication control
Risk-based access management
MFA configuration
Application control
Password policy management
Role management
Alert configuration
Policy status reporting
Data Flow
graph TD
A[MCP Client] -->|Request| B[MCP Server]
B -->|Authentication| C[Token Manager]
C -->|Access Token| D[Graph Client]
D -->|API Calls| E[Microsoft Graph]
E -->|Response| D
D -->|Results| B
B -->|Response| APrerequisites
Node.js 18.x or higher
Microsoft 365 tenant with admin access
Azure AD application with required permissions:
Policy.ReadWrite.All
RoleManagement.ReadWrite.All
User.Read.All
Application.ReadWrite.All
Installation
Installing via Smithery
To install CISA M365 MCP Server automatically via Smithery:
npx -y @smithery/cli install cisa-m365You can also directly copy the MCP settings and definitions from Smithery Protocol Directory and add the MCP server to your Claude or LLM setup that supports MCP protocol.
Clone the repository:
git clone https://github.com/DynamicEndpoints/BOD-25-01-CSA-MCP.git
cd cisa-m365Install dependencies:
npm installBuild the server:
npm run buildConfiguration
Create Azure AD application:
Navigate to Azure Portal > Azure Active Directory
Register a new application
Add required API permissions
Create a client secret
Configure environment variables:
cp .env.example .envEdit .env file:
TENANT_ID=your-tenant-id
CLIENT_ID=your-client-id
CLIENT_SECRET=your-client-secretConfigure MCP settings:
{
"mcpServers": {
"cisa-m365": {
"command": "node",
"args": ["path/to/cisa-m365/build/index.js"],
"env": {
"TENANT_ID": "your-tenant-id",
"CLIENT_ID": "your-client-id",
"CLIENT_SECRET": "your-client-secret"
}
}
}
}Usage
Available Tools
block_legacy_auth
Block legacy authentication methods.
{}block_high_risk_users
Block users detected as high risk.
{}enforce_phishing_resistant_mfa
Enforce phishing-resistant MFA for all users.
{}configure_global_admins
Configure Global Administrator role assignments.
{
"userIds": ["user1-id", "user2-id"]
}get_policy_status
Get current status of all security policies.
{}Example Usage
// Block legacy authentication
const result = await client.callTool('block_legacy_auth', {});
// Get policy status
const status = await client.callTool('get_policy_status', {});API Reference
Policy Settings API
interface PolicySettings {
legacyAuthentication: {
blocked: boolean;
compliant: boolean;
};
highRiskUsers: {
blocked: boolean;
compliant: boolean;
};
mfa: {
phishingResistant: boolean;
alternativeEnabled: boolean;
compliant: boolean;
};
applications: {
registrationRestricted: boolean;
consentRestricted: boolean;
compliant: boolean;
};
passwords: {
expirationDisabled: boolean;
compliant: boolean;
};
roles: {
globalAdminCount: number;
granularRolesEnforced: boolean;
pamEnforced: boolean;
compliant: boolean;
};
}Error Handling
The server implements comprehensive error handling:
Authentication Errors
Token acquisition failures
Permission issues
Tenant configuration problems
API Errors
Graph API request failures
Rate limiting
Service unavailability
Validation Errors
Invalid arguments
Missing required parameters
Type mismatches
Runtime Errors
Network issues
Timeout problems
Resource constraints
Example error response:
{
"error": {
"code": "InvalidParams",
"message": "Invalid role assignment arguments",
"details": {
"parameter": "userIds",
"constraint": "Must have between 2 and 8 users",
"received": "1 user"
}
}
}Testing
Run unit tests:
npm testRun integration tests:
npm run test:integrationRun compliance tests:
npm run test:complianceSecurity Considerations
Authentication
Use secure token storage
Implement token rotation
Monitor for suspicious activity
API Access
Follow least privilege principle
Regular permission audits
Monitor API usage
Data Protection
No sensitive data logging
Secure configuration storage
Regular security scans
Compliance
Regular compliance checks
Automated policy verification
Audit logging
Contributing
Fork the repository
Create a feature branch
Make your changes
Run tests
Submit a pull request
Guidelines:
Follow existing code style
Add tests for new features
Update documentation
Keep commits atomic
License
MIT
Available Tools
21 toolsblock_high_risk_signinsB
Block sign-ins detected as high risk (MS.AAD.2.3v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a destructive action ('Block') but does not specify permissions required, whether the block is reversible, rate limits, or what happens to affected sign-ins. This is inadequate for a mutation tool with zero annotation coverage.
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 purpose without unnecessary words. It is front-loaded and wastes no space, 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 as a destructive operation with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits, usage context, or expected outcomes, leaving significant gaps for an AI agent to understand and invoke 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?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately does not add parameter details, aligning with the schema's completeness, and thus meets the baseline for this dimension.
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 action ('Block') and target ('sign-ins detected as high risk'), with a specific reference to a policy standard ('MS.AAD.2.3v1'). However, it does not explicitly differentiate from sibling tools like 'block_high_risk_users', which might target users rather than sign-ins, leaving some ambiguity in sibling distinction.
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 'block_high_risk_users' or 'block_legacy_auth', nor does it mention prerequisites, conditions, or exclusions for its use. This lack of contextual direction limits effective tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block_high_risk_usersB
Block users detected as high risk (MS.AAD.2.1v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a destructive action ('Block') but does not specify permissions required, whether the block is reversible, or any side effects (e.g., user access loss). The reference 'MS.AAD.2.1v1' is cryptic and adds little practical 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 states the core action without fluff. It is front-loaded and wastes no words, though the cryptic reference 'MS.AAD.2.1v1' could be seen as slightly extraneous.
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 destructive tool with no annotations and no output schema, the description is incomplete. It lacks critical details like what 'high risk' means, how users are detected, the scope of the block, or what happens post-execution. Given the complexity implied by sibling tools, more context is needed for safe and 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?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately does not discuss parameters, avoiding redundancy. A baseline of 4 is applied since it compensates adequately for the lack of parameters by not introducing confusion.
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 ('Block') and resource ('users detected as high risk'), making the purpose specific and actionable. However, it does not distinguish this tool from sibling tools like 'block_high_risk_signins' or 'block_legacy_auth', which reduces clarity in a crowded toolset.
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 is provided on when to use this tool versus alternatives, such as 'block_high_risk_signins' for sign-ins or 'block_legacy_auth' for authentication methods. The description lacks context on prerequisites, triggers, or exclusions, leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block_legacy_authB
Block legacy authentication (MS.AAD.1.1v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('Block') but doesn't clarify what 'blocking' entails operationally (e.g., immediate enforcement, policy configuration, user impact), whether it requires specific permissions, or what the expected outcome is. This leaves significant gaps for a security enforcement tool.
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 extremely concise - a single phrase that directly states the tool's purpose without any unnecessary words. It's front-loaded with the core action and includes just enough context (the standard reference) to be meaningful. Every element 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?
For a security enforcement tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what 'blocking legacy authentication' means in practice, what systems or users are affected, whether the change is reversible, or what confirmation/result to expect. The context signals show this is a potentially impactful operation that needs more behavioral 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?
The tool has zero parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description doesn't need to compensate for any parameter gaps, and it appropriately doesn't mention parameters. A baseline of 4 is appropriate for zero-parameter tools when the 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 action ('Block legacy authentication') and specifies the resource/standard ('MS.AAD.1.1v1'), which indicates it's implementing a specific security control. However, it doesn't explicitly differentiate from sibling tools like 'block_high_risk_signins' or 'enforce_alternative_mfa', which also appear to be security enforcement tools in the same 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?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, timing considerations, or relationships to other tools like 'complete_auth_methods_migration' or 'enforce_phishing_resistant_mfa' that might be part of a broader authentication security strategy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_auth_methods_migrationC
Set Authentication Methods Manage Migration to Complete (MS.AAD.3.4v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a state change ('Set...to Complete') suggesting a mutation, but doesn't disclose permissions needed, side effects, or what happens after completion. This is a significant gap for a tool that likely modifies system state.
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 action without unnecessary words. It's appropriately sized for a no-parameter tool, though it could be slightly clearer in its phrasing.
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 lack of annotations and output schema, the description is incomplete. It doesn't explain what 'migration' involves, what 'complete' signifies, or the expected outcome, leaving critical behavioral and contextual gaps for the agent.
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 tool has 0 parameters with 100% schema coverage, so the schema fully documents the absence of inputs. The description doesn't need to add parameter details, and it appropriately doesn't mention any, earning a baseline high score for parameter clarity.
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 action ('Set Authentication Methods Manage Migration to Complete') and references a specific resource (MS.AAD.3.4v1), which gives a vague purpose. However, it doesn't clearly explain what 'migration' entails or what 'complete' means in this context, making it somewhat ambiguous despite having specific terminology.
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 is provided on when to use this tool versus alternatives. The description lacks context about prerequisites, timing, or related tools, leaving the agent without 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.
configure_admin_alertsC
Configure alerts for Global Administrator activation (MS.AAD.7.8v1)
| Name | Required | Description | Default |
|---|---|---|---|
| notificationEmails | Yes | Email addresses to notify on role activation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions configuring alerts but fails to detail critical aspects like whether this is a read-only or destructive operation, required permissions, rate limits, or the effect on existing alerts. This leaves significant gaps in understanding the tool's behavior.
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 purpose without unnecessary words. It is front-loaded and wastes no space, making it highly concise and well-structured for quick comprehension.
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 lack of annotations and output schema, the description is incomplete for a configuration tool. It doesn't explain what happens after configuration (e.g., success indicators, error handling, or alert behavior), leaving the agent with insufficient context to fully understand the tool's operation and outcomes.
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 the parameter 'notificationEmails' clearly documented as 'Email addresses to notify on role activation'. The description adds no additional semantic context beyond this, so it meets the baseline for adequate but not enhanced parameter explanation.
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 action ('Configure alerts') and the specific resource ('Global Administrator activation'), making the purpose evident. However, it doesn't explicitly differentiate this tool from its sibling 'configure_role_alerts', which might handle alerts for other roles, leaving some ambiguity in sibling distinction.
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 'configure_role_alerts' or other alert-related tools in the sibling list. It lacks context about prerequisites, exclusions, or specific scenarios for application, offering minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_admin_consentC
Configure admin consent workflow for applications (MS.AAD.5.3v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. 'Configure' implies a write/mutation operation, but the description doesn't disclose behavioral traits like required permissions, whether changes are reversible, or what specific aspects of the workflow are configurable. The MS.AAD.5.3v1 reference is opaque and adds no practical 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 brief (one sentence) but includes the cryptic 'MS.AAD.5.3v1' reference that doesn't add clear value. While front-loaded with the core purpose, the reference feels like wasted space rather than earned content.
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 configuration/mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'configure' entails operationally, what gets changed, or what success/failure looks like. The MS.AAD reference doesn't compensate for these gaps in behavioral 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?
The tool has zero parameters with 100% schema description coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a high baseline score since it doesn't need to compensate for any schema gaps.
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 ('configure') and resource ('admin consent workflow for applications'), making the purpose specific and understandable. However, it doesn't distinguish this tool from similar-sounding siblings like 'configure_global_admin_approval' or 'restrict_app_consent', 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. With multiple configuration-related siblings (configure_admin_alerts, configure_global_admin_approval, restrict_app_consent, etc.), the lack of differentiation leaves the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_authenticator_contextB
Configure Microsoft Authenticator to show login context (MS.AAD.3.3v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a configuration action but doesn't clarify whether this requires admin permissions, if it's reversible, what side effects it might have, or any rate limits. For a tool that likely modifies system settings, this is a significant gap 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 states the purpose without any wasted words. It's appropriately sized for a zero-parameter configuration tool and gets straight to the point.
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 this is a configuration tool with no annotations and no output schema, the description should provide more context about what the tool actually does, what 'login context' means, and what the expected outcome is. The current description is too minimal for a tool that likely modifies authentication settings in a production environment.
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 tool has zero parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description doesn't need to explain any parameters, and it appropriately doesn't attempt to do so. A baseline of 4 is appropriate for zero-parameter tools.
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 'configure' and the resource 'Microsoft Authenticator' with the specific purpose 'to show login context', which is more specific than just restating the name. However, it doesn't differentiate from sibling tools like 'configure_admin_alerts' or 'configure_admin_consent' that also configure settings, leaving room for improvement.
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 relationships to other configuration tools in the sibling list, leaving the agent with no usage context beyond the basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_global_admin_approvalB
Configure approval requirement for Global Administrator activation (MS.AAD.7.6v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'configure' implies a write/mutation operation, the description does not specify whether this requires elevated permissions, if changes are reversible, what the default state is, or any side effects. The policy reference hints at compliance but lacks operational details needed for safe invocation.
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 purpose without any fluff or redundant information. It is appropriately sized for a no-parameter tool and front-loads the essential action ('configure').
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 an administrative configuration tool with no annotations and no output schema, the description is insufficient. It lacks critical information such as required permissions, system impact, success/failure indicators, or how to verify the configuration. The policy reference adds some context but does not compensate for these gaps in operational 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?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately does not discuss parameters, focusing instead on the tool's purpose. A baseline score of 4 is applied since the schema fully covers the absence of parameters, and the description does not add unnecessary 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 verb 'configure' and the resource 'approval requirement for Global Administrator activation', providing a specific purpose. However, it does not distinguish this tool from its many sibling configuration tools (e.g., configure_admin_consent, configure_role_alerts), which all share similar naming patterns and administrative functions.
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 a specific policy reference ('MS.AAD.7.6v1'), which might imply a regulatory or compliance context, but does not explicitly state when this configuration is needed, what prerequisites exist, or how it differs from other sibling tools like configure_admin_consent or configure_global_admins.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_global_adminsC
Configure Global Administrator role assignments (MS.AAD.7.1v1)
| Name | Required | Description | Default |
|---|---|---|---|
| userIds | Yes | List of user IDs to assign Global Administrator role |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'configure' which implies a write operation, but does not specify permissions required, whether changes are reversible, potential side effects, or any rate limits. This is a significant gap for a tool that modifies administrator roles.
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 purpose without unnecessary details. It is front-loaded and wastes no words, making it easy for an agent 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 complexity of configuring global administrators, the lack of annotations and output schema means the description should provide more context. It does not cover behavioral aspects like security implications, error handling, or response format, leaving the agent with incomplete information for safe and 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?
The input schema has 100% description coverage, with 'userIds' clearly documented as a list of user IDs for role assignment, including constraints (2-8 items). The description does not add any additional meaning beyond this, such as format examples or validation rules, 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 action ('configure') and resource ('Global Administrator role assignments'), with a specific reference to MS.AAD.7.1v1 indicating a compliance or technical standard. However, it does not explicitly differentiate from sibling tools like 'configure_admin_alerts' or 'configure_role_alerts', which might involve similar configuration actions but for different 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, such as 'enforce_granular_roles' or 'configure_admin_consent', which could be related to role management. There is no mention of prerequisites, context, or exclusions, leaving the agent without clear usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_role_alertsC
Configure alerts for privileged role assignments (MS.AAD.7.7v1)
| Name | Required | Description | Default |
|---|---|---|---|
| notificationEmails | Yes | Email addresses to notify on role assignments |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions configuring alerts but does not specify whether this is a read-only or mutative operation, what permissions are required, how alerts are delivered (e.g., email frequency), or any side effects like overwriting existing settings. This leaves significant gaps in understanding the tool's behavior.
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 purpose without unnecessary words. It is front-loaded with the core action and resource, making it easy to parse quickly, which is ideal 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 lack of annotations and output schema, the description is incomplete for a tool that likely involves configuration changes. It does not cover behavioral aspects like mutability, permissions, or response format, which are critical for an agent to use it correctly in a security or compliance 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?
The input schema has 100% description coverage, with the parameter 'notificationEmails' clearly documented as 'Email addresses to notify on role assignments'. The description does not add any additional semantic context beyond this, such as email format requirements or limits, so it meets the baseline of 3 where the schema handles 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 action ('Configure alerts') and target resource ('privileged role assignments'), with a specific reference to 'MS.AAD.7.7v1' indicating a compliance or security standard. However, it does not explicitly differentiate from sibling tools like 'configure_admin_alerts' or 'configure_admin_consent', which limits the score to 4 rather than 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, such as 'configure_admin_alerts' or other alert-related tools in the sibling list. It lacks context about prerequisites, timing, or exclusions, leaving the agent with minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disable_password_expiryB
Disable password expiration (MS.AAD.6.1v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Disable') but doesn't clarify if this is a permanent change, requires specific authentication, has side effects (e.g., on security policies), or what the expected outcome is. This leaves significant gaps in understanding the tool's behavior beyond its basic purpose.
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 extremely concise—a single phrase that directly states the tool's function without any unnecessary words. It is front-loaded and wastes no space, making it efficient for quick comprehension by an AI agent.
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 a security configuration tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after disabling password expiry (e.g., confirmation message, error handling) or any dependencies. For a tool that likely involves system changes, more context is needed to ensure safe and correct 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?
The tool has 0 parameters, and the input schema has 100% description coverage, so there are no parameters to document. The description doesn't need to add parameter semantics, but it could have mentioned if any implicit inputs (like user context) are required. Since there are no parameters, a baseline of 4 is appropriate, as it avoids misleading or missing param info.
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 a specific verb ('Disable') and resource ('password expiration'), making it immediately understandable. However, it doesn't distinguish this tool from its siblings (like 'configure_admin_alerts' or 'enforce_phishing_resistant_mfa'), which are also security configuration tools but for different aspects, 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 or in what context it should be applied. It lacks any mention of prerequisites, such as administrative permissions or specific scenarios where disabling password expiry is appropriate, leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enforce_alternative_mfaB
Enforce alternative MFA method if phishing-resistant MFA not enforced (MS.AAD.3.2v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool enforces an alternative MFA method, implying a mutation operation, but doesn't disclose critical details such as required permissions, whether changes are reversible, or any rate limits. The reference 'MS.AAD.3.2v1' adds some context but is cryptic without explanation.
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 action and condition. However, the cryptic reference 'MS.AAD.3.2v1' adds minor clutter without clear value, slightly reducing 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 (enforcement implies mutation) and lack of annotations or output schema, the description is incomplete. It doesn't explain what the alternative MFA method entails, what the enforcement process involves, or what the expected outcome is, leaving significant gaps for an AI agent to understand and use the 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?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't mention any parameters, which is appropriate and maintains a baseline score of 4, as it doesn't need to compensate for gaps 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 action ('Enforce alternative MFA method') and the condition ('if phishing-resistant MFA not enforced'), providing a specific verb and context. It distinguishes from sibling 'enforce_phishing_resistant_mfa' by specifying an alternative method, though it doesn't explicitly name the resource or differentiate from other MFA-related tools like 'enforce_privileged_mfa'.
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 when phishing-resistant MFA is not enforced, but it doesn't provide explicit guidance on when to use this tool versus alternatives like 'enforce_phishing_resistant_mfa' or 'enforce_privileged_mfa'. No exclusions or prerequisites are mentioned, leaving usage context somewhat vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enforce_cloud_accountsB
Enforce cloud-only accounts for privileged users (MS.AAD.7.3v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks behavioral details. 'Enforce' implies a write/mutation operation, but it doesn't disclose required permissions, whether changes are reversible, potential side effects, or rate limits. The MS.AAD reference hints at a compliance standard but doesn't clarify implementation behavior.
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 purpose with no wasted words. It's appropriately sized and front-loaded, 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 complexity implied by 'enforce' (a mutation operation) and the lack of annotations or output schema, the description is incomplete. It doesn't explain what 'enforce' entails operationally, what success/failure looks like, or how it interacts with the broader security framework, leaving significant gaps for an AI agent.
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 tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description appropriately focuses on the tool's purpose without redundant parameter details, meeting the baseline for parameter-less tools.
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 action ('enforce') and target ('cloud-only accounts for privileged users'), with a specific compliance reference (MS.AAD.7.3v1) adding precision. However, it doesn't explicitly differentiate from sibling tools like 'enforce_privileged_mfa' or 'enforce_alternative_mfa', which target different 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?
No guidance is provided on when to use this tool versus alternatives. The description mentions 'privileged users' but doesn't specify prerequisites, timing, or exclusions compared to similar enforcement tools 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.
enforce_granular_rolesB
Enforce use of granular roles instead of Global Administrator (MS.AAD.7.2v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a mutation action ('Enforce') but does not detail what enforcement entails (e.g., policy changes, user impacts, reversibility), permissions required, or any side effects like rate limits. This lack of operational context is a significant gap for a tool with potential security implications.
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 purpose without unnecessary words. It is front-loaded with the core action and includes a compliance reference for added 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 (implied security enforcement), lack of annotations, and no output schema, the description is incomplete. It does not explain what happens upon execution, expected outcomes, or error conditions, leaving critical behavioral aspects undocumented for an agent to use it 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?
The tool has zero parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description appropriately does not discuss parameters, focusing on the tool's purpose instead, which aligns with the baseline for parameterless tools.
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 action ('Enforce use of') and target resource ('granular roles instead of Global Administrator'), with a specific reference to a compliance standard ('MS.AAD.7.2v1'). However, it does not explicitly differentiate from sibling tools like 'configure_global_admins' or 'configure_role_alerts', which might involve related role management, keeping 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 other sibling tools for role configuration or admin management. It mentions a compliance standard but does not specify prerequisites, exclusions, or contextual triggers for enforcement, leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enforce_pamB
Enforce PAM system for privileged role assignments (MS.AAD.7.5v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a mutation action ('Enforce') but does not specify permissions required, potential side effects, or response behavior. This leaves critical operational details unclear for a tool that likely modifies system settings.
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 no wasted words. It is front-loaded with the core action and resource, making it easy to parse quickly, which is ideal for a tool with no 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 has no parameters and no output schema, the description is minimally adequate but lacks depth. It does not explain what 'enforce' entails operationally or what the expected outcome is, which is a gap for a mutation tool with no annotations to clarify 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?
The tool has zero parameters, and the schema description coverage is 100%, so no parameter documentation is needed. The description does not add parameter details, which is appropriate, but it includes a version reference ('MS.AAD.7.5v1') that provides some contextual semantics, slightly enhancing understanding beyond 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 action ('Enforce') and the resource ('PAM system for privileged role assignments'), making the purpose specific and understandable. However, it does not differentiate this tool from sibling tools like 'enforce_granular_roles' or 'enforce_privileged_mfa', which also involve enforcement in similar domains, leaving some ambiguity in 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, such as other enforcement tools in the sibling list. It lacks context about prerequisites, timing, or exclusions, offering only a basic functional statement without operational direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enforce_phishing_resistant_mfaC
Enforce phishing-resistant MFA for all users (MS.AAD.3.1v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Enforce' implies a configuration change or policy application, but the description doesn't specify whether this requires admin privileges, what happens to existing MFA settings, whether it's reversible, or what the expected outcome looks like. For a zero-parameter mutation tool with no annotation coverage, this represents significant gaps in behavioral 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 extremely concise (one sentence) but the parenthetical reference 'MS.AAD.3.1v1' adds noise without clear value to an AI agent. While brief, it's not optimally structured - the compliance reference should either be explained or omitted for better front-loading of actionable 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?
For a mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what 'enforce' entails operationally, what success/failure looks like, or any side effects. The MS.AAD.3.1v1 reference doesn't compensate for these gaps. Given the tool's likely administrative nature and impact on user authentication, more context is needed.
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 zero parameters and 100% schema description coverage, the baseline is 4. The description appropriately doesn't discuss parameters since none exist, and the schema coverage is complete. No additional parameter information is needed or provided.
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 action ('Enforce') and target ('phishing-resistant MFA for all users'), providing a specific verb+resource combination. It distinguishes from some siblings like 'enforce_alternative_mfa' and 'enforce_privileged_mfa' by specifying the phishing-resistant aspect and universal scope. However, it doesn't fully differentiate from all possible similar tools in the broader context.
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 'enforce_alternative_mfa' or 'enforce_privileged_mfa'. There's no mention of prerequisites, timing considerations, or exclusion criteria. The MS.AAD.3.1v1 reference might imply a compliance context but doesn't offer practical usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enforce_privileged_mfaB
Enforce phishing-resistant MFA for privileged roles (MS.AAD.3.6v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Enforce' implies a mutation or configuration change, but the description doesn't specify whether this is a one-time action, requires admin permissions, has side effects (e.g., affecting user access), or provides confirmation of success. It also omits details like rate limits, error handling, or what 'MS.AAD.3.6v1' refers to. For a tool with potential security impacts, this is a significant gap.
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 action ('Enforce phishing-resistant MFA') and scope ('for privileged roles'). The reference 'MS.AAD.3.6v1' adds context without verbosity. Every word serves a purpose, with no redundant or vague phrasing, making it easy for an agent 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 (a security enforcement action with no parameters) and the lack of annotations and output schema, the description is minimally adequate. It states what the tool does but misses critical behavioral details like what 'enforce' entails operationally, expected outcomes, or error conditions. For a privileged role MFA tool, more context on dependencies or consequences would improve completeness, but it meets a basic threshold.
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 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate. Baseline is 4 for zero parameters, as the schema fully covers the absence of inputs, and the description doesn't need to compensate for any gaps.
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: 'Enforce phishing-resistant MFA for privileged roles' with a specific verb ('enforce'), resource ('phishing-resistant MFA'), and scope ('privileged roles'). It distinguishes from siblings like 'enforce_phishing_resistant_mfa' (which lacks the privileged role focus) and 'enforce_alternative_mfa' (which specifies alternative MFA). However, it doesn't explicitly differentiate from all siblings, such as 'configure_admin_alerts' or 'restrict_app_consent', which might overlap in security policy 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 'privileged roles' but doesn't specify prerequisites, timing, or exclusions. For example, it doesn't clarify if this should be used before or after 'enforce_phishing_resistant_mfa', or if it's part of a broader security workflow with siblings like 'configure_role_alerts'. The lack of usage context leaves the agent guessing about appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_policy_statusB
Get current status of all CISA M365 security policies
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation ('Get'), but doesn't specify if it requires authentication, has rate limits, returns real-time or cached data, or details the output format. This is a significant gap for a tool with zero annotation coverage.
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 with no wasted words. It's front-loaded with the core action and resource, making it highly efficient and easy to parse.
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 lack of annotations and output schema, the description is incomplete. It doesn't explain what the status output includes (e.g., policy names, compliance levels, timestamps) or behavioral aspects like error handling, leaving the agent with insufficient 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?
The tool has 0 parameters, and schema description coverage is 100%, so there's no need for parameter details in the description. The baseline for this scenario is 4, as the description appropriately focuses on the tool's purpose without redundant parameter information.
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 'Get' and the resource 'current status of all CISA M365 security policies', making the purpose specific and understandable. However, it doesn't explicitly distinguish this tool from its siblings (e.g., configuration or enforcement 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?
No guidance is provided on when to use this tool versus alternatives. The description lacks context about prerequisites, timing, or comparisons with sibling tools, leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restrict_app_consentB
Allow only administrators to consent to applications (MS.AAD.5.2v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a configuration change ('Allow only administrators') but does not specify whether this is a toggle, policy enforcement, or one-time action. Critical details like permissions required, reversibility, or impact on existing applications are missing, leaving significant gaps in understanding the tool's behavior.
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 function. It is front-loaded with the core action and avoids redundancy. However, the appended 'MS.AAD.5.2v1' adds minor clutter without clear value, slightly detracting from perfect 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 complexity of security configuration tools and the lack of annotations or output schema, the description is insufficient. It does not explain the outcome, such as whether the change is immediate or requires validation, nor does it address error conditions or dependencies. For a tool that likely modifies critical permissions, more context is needed to ensure safe and 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?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately does not discuss parameters, focusing instead on the tool's purpose. This meets the baseline for tools with no parameters, as it avoids unnecessary details while maintaining relevance.
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: 'Allow only administrators to consent to applications' specifies the action (allow) and target (administrator consent for applications). It distinguishes from siblings like 'restrict_app_registration' and 'configure_admin_consent' by focusing on consent permissions rather than registration or alert configuration. However, the inclusion of 'MS.AAD.5.2v1' adds technical jargon without explanation, slightly reducing clarity.
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 prerequisites, such as requiring administrative permissions or specific conditions in Azure AD. Without context, users might confuse it with similar tools like 'configure_admin_consent' or 'restrict_group_consent', leading to potential misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restrict_app_registrationB
Allow only administrators to register applications (MS.AAD.5.1v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool enforces a restriction policy but doesn't describe what happens when invoked: whether it's a one-time configuration change, requires admin permissions, has side effects on existing applications, or provides confirmation. For a policy enforcement tool with zero annotation coverage, this leaves critical behavioral aspects unspecified.
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. The MS.AAD.5.1v1 reference adds context but doesn't disrupt conciseness. It could be slightly improved by integrating the reference more naturally, but it's well-structured and front-loaded.
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 (policy enforcement), lack of annotations, and no output schema, the description is minimally adequate. It states what the tool does but lacks details on behavioral impact, permissions needed, or result format. For a security configuration tool, this leaves gaps that could lead to misuse or uncertainty about outcomes.
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 tool has zero parameters, and schema description coverage is 100% (empty schema is fully described). The description doesn't need to explain parameters, and the baseline for zero parameters is 4. The MS.AAD.5.1v1 reference might hint at a compliance standard but doesn't relate to 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: 'Allow only administrators to register applications' specifies the action (allow) and resource (application registration) with a clear restriction (administrators only). It distinguishes from siblings like 'restrict_app_consent' by focusing on registration rather than consent, though it doesn't explicitly compare them. The MS.AAD.5.1v1 reference adds specificity but doesn't fully explain the distinction.
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 compare it to sibling tools like 'restrict_app_consent' or 'configure_admin_consent'. The agent must infer usage from the purpose alone, which is insufficient for informed tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restrict_group_consentB
Prevent group owners from consenting to applications (MS.AAD.5.4v1)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a configuration change ('Prevent') but does not specify whether this is a read-only or destructive operation, what permissions are required, or any side effects like impact on existing consents. This leaves significant gaps in understanding the tool's behavior.
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 purpose without unnecessary words. It is front-loaded and wastes no space, 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 complexity of a configuration tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits, usage context, and expected outcomes, making it incomplete for an agent to reliably invoke this tool in a real-world scenario.
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 tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description does not add parameter semantics, but this is acceptable given the lack of parameters, warranting a baseline score of 4 for adequate coverage in this context.
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 action ('Prevent') and target ('group owners from consenting to applications'), making the purpose specific and understandable. However, it does not explicitly differentiate from sibling tools like 'restrict_app_consent' or 'configure_admin_consent', which limits the score to 4 instead 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, such as 'restrict_app_consent' or 'configure_admin_consent', nor does it mention prerequisites or exclusions. It only states what the tool does without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose targeting specific security policy controls - blocking sign-ins vs. users, configuring different admin workflows, enforcing various MFA methods, restricting different consent types. The descriptions with MS.AAD codes further clarify boundaries, leaving no ambiguity about which tool to use for each security requirement.
All tools follow a consistent verb_noun pattern using snake_case throughout - every tool starts with an action verb (block, complete, configure, disable, enforce, get, restrict) followed by a specific noun phrase describing the security control. This creates a highly predictable and readable naming convention across all 21 tools.
21 tools is slightly high but reasonable for the comprehensive CISA M365 security policy domain. The server covers authentication methods, admin controls, application consent, and privileged access management - each area requiring multiple specific controls. While borderline heavy, each tool addresses a distinct security requirement that earns its place in the set.
The tool set provides complete coverage for CISA M365 security policy implementation with get_policy_status for assessment and enforcement tools for every major control area: authentication methods (MFA, migration), admin security (global admins, alerts, PAM), and application governance (consent, registration). There are no obvious gaps - agents can implement the full security framework without dead ends.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI governance MCP server for EU AI Act compliance and jurisdiction verification
Authenticated MCP server for ClearPolicy policy and compliance workflows.
EU compliance corpus across 8 frameworks (NIS2, DORA, AI Act, ISO 27001 + more) via MCP.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables interaction with Microsoft Dynamics 365 CRM from Claude Desktop, allowing users to retrieve, create, and update CRM data through natural language.521MIT
- AlicenseBqualityNot gradedmaintenanceA lightweight MCP server that enables integration with Microsoft SharePoint, allowing clients to interact with documents and folders through the Model Context Protocol.965
- FlicenseNot gradedqualityDmaintenanceThis MCP Server provides a natural language interface to interact with Google's Policy Analyzer API, allowing users to analyze policies and evaluate compliance through conversations.
- FlicenseNot gradedqualityDmaintenanceAn MCP Server that enables interaction with Google's Organization Policy API, allowing users to manage organization policies that control resource behavior within Google Cloud environments.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DynamicEndpoints/Automated-BOD-25-01-CISA-Microsoft-Policies-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server