Skip to main content
Glama
DynamicEndpoints

BOD-25-01-CSA-Microsoft-Policy-MCP

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

  1. Server Class

    • Handles MCP protocol implementation

    • Manages tool registration and execution

    • Implements error handling and logging

  2. Authentication

    • Token-based authentication with Microsoft Graph API

    • Automatic token refresh

    • Secure credential management

  3. Graph Client

    • Wrapper around Microsoft Graph API

    • Type-safe request/response handling

    • Retry logic and error handling

  4. 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| A

Prerequisites

  • 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-m365

You 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.

  1. Clone the repository:

git clone https://github.com/DynamicEndpoints/BOD-25-01-CSA-MCP.git
cd cisa-m365
  1. Install dependencies:

npm install
  1. Build the server:

npm run build

Configuration

  1. Create Azure AD application:

    • Navigate to Azure Portal > Azure Active Directory

    • Register a new application

    • Add required API permissions

    • Create a client secret

  2. Configure environment variables:

cp .env.example .env

Edit .env file:

TENANT_ID=your-tenant-id
CLIENT_ID=your-client-id
CLIENT_SECRET=your-client-secret
  1. Configure 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:

  1. Authentication Errors

    • Token acquisition failures

    • Permission issues

    • Tenant configuration problems

  2. API Errors

    • Graph API request failures

    • Rate limiting

    • Service unavailability

  3. Validation Errors

    • Invalid arguments

    • Missing required parameters

    • Type mismatches

  4. 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

  1. Run unit tests:

npm test
  1. Run integration tests:

npm run test:integration
  1. Run compliance tests:

npm run test:compliance

Security Considerations

  1. Authentication

    • Use secure token storage

    • Implement token rotation

    • Monitor for suspicious activity

  2. API Access

    • Follow least privilege principle

    • Regular permission audits

    • Monitor API usage

  3. Data Protection

    • No sensitive data logging

    • Secure configuration storage

    • Regular security scans

  4. Compliance

    • Regular compliance checks

    • Automated policy verification

    • Audit logging

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Run tests

  5. Submit a pull request

Guidelines:

  • Follow existing code style

  • Add tests for new features

  • Update documentation

  • Keep commits atomic

License

MIT

Available Tools

21 tools
block_high_risk_signinsB

Block sign-ins detected as high risk (MS.AAD.2.3v1)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
notificationEmailsYesEmail addresses to notify on role activation

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_authenticator_contextB

Configure Microsoft Authenticator to show login context (MS.AAD.3.3v1)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdsYesList of user IDs to assign Global Administrator role

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
notificationEmailsYesEmail addresses to notify on role assignments

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_registrationB

Allow only administrators to register applications (MS.AAD.5.1v1)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

TDQS

A3.5/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness5/5

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

Related MCP Servers

Latest Blog Posts

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