IntuneRW-Core
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@IntuneRW-Corelist all Intune-managed devices"
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.
EndpointOps-MCP
A full read/write Model Context Protocol (MCP) server for managing Microsoft Intune and Entra ID (Azure AD) through the Microsoft Graph API. It gives AI assistants (Claude Desktop, VS Code Copilot, Cursor, Copilot Studio, etc.) direct, structured access to device management, app management, compliance, security, identity, and reporting operations across your tenant.
The server exposes 34 MCP tools, each accepting an action parameter so a single tool can drive dozens of related Graph operations without needing one MCP tool per endpoint. In total the tools cover 280+ underlying Microsoft Graph operations.
⚠️ This server can create, update, and delete real objects in your tenant (devices, users, groups, policies, apps, etc.). Review the Permissions section and scope the app registration carefully before pointing it at a production tenant.
Approved EAM and Win32 application lifecycle
Application lifecycle actions are part of the existing manage_intune_apps tool;
no additional MCP tools are registered. This implementation is independent of
Application Orchestrator MCP and does not use its credentials, state, or fixed
test group. Defender/vulnerability ingestion and unattended update scheduling are
not included.
Action | Purpose |
| Read-only EAM-first discovery and immutable, 24-hour plan creation |
| Inspect an existing Win32/EAM app's assignments and groups |
| Review the exact plan, digest, and operator approval |
| Queue an operator-approved plan once ( |
| Inspect progress, errors, and partial-resource IDs |
Creation and deployment scope
Provide an exact application name, publisher, and version. Ambiguous catalog or tenant matches stop for selection; this implementation does not guess "latest".
EAM is checked first, including catalog-package links on already acquired apps. An exact existing app is reused, not duplicated. EAM requires appropriate licensing.
No target fields means create/publish only: existing assignments are not changed and no group is created.
To deploy, supply
group_idsor exactgroup_names. Multiple groups are supported; ambiguous or missing names stop rather than choosing a group.Alternatively, supply
reuse_scope_from_app_id. The plan preserves that app's included/excluded security groups, assignment filters, intents (including existing uninstall intents), and compatible assignment settings. Review the inherited scope before approval. Discovery alone is not deployment approval.All-devices/all-users targets and Microsoft 365 group targets are deliberately rejected in this lifecycle; they are never silently omitted. Cross-app-type settings that cannot be preserved also stop for review.
New groups are a separate
manage_entra_groupsoperation. All three group creation actions now requireconfirm=Trueafter explicit user approval. Search existing groups first. This confirmation flag records caller intent; the client must actually obtain the user's consent.Assignments are additive and read back, with exclusions written first. The worker never uses the replacement
/assignoperation, removes assignments, populates group membership, or broadens an approved scope.Existing assignments and group properties are rechecked before writes. Drift requires a newly reviewed plan. This is not a distributed transaction: a partial failure can leave a published app or some assignments; inspect the job.
Example create-only tool arguments (illustrative names/version; not a live request):
{
"action": "plan_lifecycle",
"body": {
"app_name": "Example App",
"publisher": "Example Vendor",
"version": "2.0.0"
}
}For a deployment, add group_ids: ["<existing-security-group-object-id>"] or
reuse_scope_from_app_id: "<existing-app-object-id>" to body, not both.
Use discover_deployment_scope with app_id to inspect the source first.
When no EAM/existing app matches, additionally provide:
{
"source": {
"artifacts": [
{
"filename": "setup.exe",
"url": "https://approved.vendor.example/setup.exe",
"sha256": "<verified-64-character-sha256>"
}
],
"scripts": [],
"setup_file": "setup.exe"
},
"win32": {
"description": "Reviewed unattended installation",
"install_command": "setup.exe /quiet",
"uninstall_command": "<vendor-documented-uninstall-command>",
"detection_path": "%ProgramFiles%\\Example",
"detection_file": "Example.exe",
"detection_version": "2.0.0.0",
"architecture": "x64",
"minimum_windows_release": "Windows11_23H2",
"install_context": "system"
},
"evidence_urls": ["https://approved.vendor.example/deployment-documentation"]
}The client researches official installation instructions and provides the reviewed
commands, hashes, and evidence links. Evidence links are citations for operator
review, not automatically verified deployment recipes. Do not guess switches.
Optional scripts: [{filename, content}] are PowerShell package data for
approved endpoint installation, not scripts executed on the packaging worker.
The worker downloads approved artifacts and invokes only Microsoft's Content
Prep Tool locally. Safe filenames, exact download/redirect host allow-lists,
public-address checks, size limits, TLS validation, SHA256 pins, encrypted payload
upload, SAS renewal, content commit polling, and publish polling are enforced.
Win32 detection is file version >= detection_version, not file existence.
Use a real versioned file. Apps without suitable file-version metadata require
another detection strategy before onboarding; registry/MSI/custom-script detection
and automatic supersedence are not implemented here. Test the vendor's upgrade
behavior before using a new package against existing installations.
Operator setup and execution
Use a dedicated environment and configure this repository's own .env using
env.example. Do not copy secrets into source or tool arguments.
Set-Location C:\Temp\EndpointOps-MCP
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .Configure the tenant/application and permissions for this server. The lifecycle
needs DeviceManagementApps.ReadWrite.All and Group.Read.All with admin consent.
Group creation additionally needs Group.ReadWrite.All; grant it only if needed.
Existing server operations may require other permissions listed below.
Provision the official Microsoft Win32 Content Prep Tool
on a Windows worker. Set ENDPOINTOPS_PREP_TOOL to its absolute executable path,
ENDPOINTOPS_PREP_TOOL_SHA256 to its verified SHA256, and
ENDPOINTOPS_DOWNLOAD_HOSTS to exact artifact and redirect hosts. Empty
allow-lists deny downloads. No installer/prep utility is downloaded implicitly.
EAM acquisition does not require the prep utility.
Plans and jobs live in work\apps.sqlite3 by default. MCP and worker must share
the same local ENDPOINTOPS_STATE_PATH, tenant/client/endpoints, and Windows
identity/access controls. Bind worker authentication independently: app-only
credentials work unattended; delegated mode needs a usable silent token cache
for the worker's OS identity and may require reauthentication.
After inspecting an MCP-staged plan:
.\.venv\Scripts\python.exe -m intune_mcp_server.app_admin show <plan-id>
.\.venv\Scripts\python.exe -m intune_mcp_server.app_admin approve <plan-id> --digest <exact-digest>Then call the existing app tool:
{
"action": "queue_lifecycle",
"plan_id": "<plan-id>",
"plan_digest": "<exact-digest>",
"confirm": true
}Enable writes only for an approved operation and run one worker pass:
$env:ENDPOINTOPS_APP_WRITES_ENABLED = "true"
.\.venv\Scripts\python.exe -m intune_mcp_server.app_worker --once
.\.venv\Scripts\python.exe -m intune_mcp_server.app_admin job <job-id>Omit --once for a foreground queue consumer. Each job runs in a bounded child
process with its own temporary workspace, cleaned after normal completion or
handled failure. Hard OS/service termination can leave temporary files or a
running job. Stop the worker and inspect Graph for partial resources before:
.\.venv\Scripts\python.exe -m intune_mcp_server.app_admin fail-interrupted <job-id> --confirm-worker-stoppedFailed/ambiguous jobs are not replayed by enqueueing again. Resource IDs and phase checkpoints persist for investigation. Stage a new plan only after reconciliation. Graph mutation HTTP 503/transport failures are not blindly retried.
Deployment boundary: this is a single-operator, trusted-host queue, not a
multi-tenant authorization service. Protect the database, token cache, .env,
prep tool, and approval CLI with OS ACLs. Don't expose the server to untrusted
clients or grant an AI process shell/DB access to self-approve. Sharing a writable
SQLite file over a network or across cloud instances is unsupported. Hosted
deployments need authenticated ingress and an appropriate shared queue/approval
service before use across trust boundaries. Legacy raw CRUD/assignment actions
remain admin primitives; they do not use this approval queue.
Success means Intune publication and requested assignments were verified, not
that endpoints installed the application. Use get_install_status and Intune
reporting for device outcomes. Native EAM auto-update, scheduled updates,
Defender integration, and automatic rollback are outside this release.
Validation (no tenant credentials required):
.\.venv\Scripts\python.exe -m unittest discover -s tests -v
.\.venv\Scripts\python.exe -m pip checkRelated MCP server: EntraID MCP Server
Features
Core / Connection
Interactive and app-only (client credentials) authentication flows
Session auth status, sign-in, and one-step connect helpers
Graph connectivity test and tenant info
Intune tenant overview (device counts, compliance, OS breakdown)
discover_graph_operations— self-describing catalog of every action every tool supports
Intune Device & App Management
List, search, filter, and inspect managed devices
Remote actions: sync, restart, lock, rename, locate, wipe, retire, reset passcode, lost mode, defender scan, log collection, diagnostics collection
BitLocker / FileVault recovery key lookups and encryption reports
Mobile app CRUD, assignments (required/available/uninstall), install status, discovered/detected apps
App configuration (MAM) and app protection policies
Compliance & Configuration
Compliance policies (CRUD, assignment, deployment status)
Device configuration profiles and Settings Catalog policies
ADMX / administrative template policies
Endpoint security policies and templates (AV, Firewall, EDR)
Security baselines (templates + deployed profile status)
Windows Update rings and feature/quality/driver update profiles
Enrollment & Fleet Operations
PowerShell scripts and proactive remediations (Windows + macOS shell scripts)
Enrollment restrictions, Apple VPP/DEP tokens, Android Enterprise settings
Windows Autopilot devices, deployment profiles, and enrollment status page (ESP) profiles
Assignment filters and scope tags
Intune RBAC role definitions and role assignments
Windows 365 Cloud PC
Cloud PC lifecycle (list, restart, reprovision, resize, restore, troubleshoot)
Provisioning policies, gallery images, network connections, audit events
Entra ID (Azure AD)
Full user lifecycle: CRUD, onboarding/offboarding, licenses, manager assignment, password/session management, bulk operations
Group management: security, Microsoft 365, and dynamic groups; members/owners
Entra device inventory management (list/search/enable/disable/delete)
Conditional Access policies and named locations
Identity Protection: risky users, risk detections, sign-in/audit logs, MFA and authentication methods
App registrations and enterprise app inspection/management
Tenant Administration & Reporting
Organization/domain info, service health, directory roles, subscriptions, security defaults
Compliance, malware, encryption, endpoint analytics, app reliability, and license usage reports
Async Graph report export jobs (
deviceManagement/reports/exportJobs)
Available Tools
# | Tool | Area |
1 |
| Auth |
2 |
| Auth |
3 |
| Auth |
4 |
| Auth |
5 |
| Auth |
6 |
| Auth |
7 |
| Auth |
8 |
| Core |
9 |
| Intune Devices |
10 |
| Encryption |
11 |
| Apps |
12 |
| App Protection (MAM) |
13 |
| Compliance |
14 |
| Config Profiles |
15 |
| Settings Catalog |
16 |
| ADMX / GPO |
17 |
| Endpoint Security |
18 |
| Security Baselines |
19 |
| Windows Update |
20 |
| Scripts & Remediations |
21 |
| Enrollment |
22 |
| Autopilot |
23 |
| Filters & Scope Tags |
24 |
| Intune RBAC |
25 |
| Windows 365 Cloud PC |
26 |
| Entra Users |
27 |
| Entra Groups |
28 |
| Entra Devices |
29 |
| Conditional Access |
30 |
| Identity Protection |
31 |
| App Registrations |
32 |
| Tenant Administration |
33 |
| Reports & Analytics |
34 |
| Catalog / Discovery |
Each manage_* tool takes an action parameter (e.g. manage_intune_devices(action="wipe", device_id="...", confirm=True)). Call discover_graph_operations at any time to get the full, up-to-date list of actions per tool directly from the running server.
Destructive actions (wipe, delete, retire, etc.) require an explicit confirm=True argument — calling them without it returns a confirmation_required response instead of executing.
Required Graph API Permissions
Grant these Application permissions to your Entra ID app registration (Azure Portal → App registrations → API permissions → Microsoft Graph → Application permissions), then click Grant admin consent.
Intune
DeviceManagementManagedDevices.ReadWrite.All
DeviceManagementConfiguration.ReadWrite.All
DeviceManagementApps.ReadWrite.All
DeviceManagementServiceConfig.ReadWrite.All
DeviceManagementRBAC.ReadWrite.All
DeviceManagementScripts.ReadWrite.All
DeviceManagementManagedDevices.PrivilegedOperations.AllEntra ID
User.ReadWrite.All
Group.ReadWrite.All
Directory.ReadWrite.All
RoleManagement.ReadWrite.Directory
Policy.ReadWrite.ConditionalAccess
IdentityRiskyUser.ReadWrite.All
IdentityRiskEvent.Read.All
AuditLog.Read.All
UserAuthenticationMethod.ReadWrite.All
Application.Read.All
Organization.Read.AllTenant Administration & Reporting
ServiceHealth.Read.All
ServiceMessage.Read.All
Reports.Read.AllWindows 365
CloudPC.ReadWrite.AllNotes:
DeviceManagementManagedDevices.PrivilegedOperations.Allis required for high-impact remote actions such as device log collection requests.Some enrollment-restriction write actions additionally require the calling principal (or the app registration's effective context) to hold the Global Administrator or Intune Service Administrator directory role — this is a Graph service-side business rule, not just an application permission.
If you only need read-only/reporting access, use the
.Read.Allvariants instead of.ReadWrite.Allwhere available and drop any write-only scopes you don't need.
Prerequisites
Python 3.10+ (3.11 recommended)
A Microsoft Entra ID tenant with Global Administrator (or delegated equivalent) access to create an app registration
An Entra ID app registration configured for client credentials (app-only) auth, with the permissions above granted and admin-consented
Installation
git clone https://github.com/nelladath/EndpointOps-MCP.git
cd EndpointOps-MCP
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txtConfigure environment variables
Copy env.example to .env and fill in your app registration values:
TENANT_ID=your-tenant-id
CLIENT_ID=your-app-client-id
CLIENT_SECRET=your-app-client-secret
AUTH_MODE=appAUTH_MODE supports:
app— app-only (client credentials) token, no user interaction (default, recommended for automation)delegated— signed-in user token only (device-code or browser flow)hybrid— app-only Graph calls gated behind an optional first-layer interactive user sign-in
See env.example for the full list of options (interactive login mode, token cache path, Graph endpoint overrides).
VS Code Setup (MCP Client)
Install the MCP extension support in VS Code (built into recent Copilot Chat versions) or your preferred MCP-compatible client.
Build the console entry point into your virtual environment (done automatically by
pip install -r requirements.txt+ the project'spyproject.tomlscript entry, or run directly viapython -m intune_mcp_server).Add a server entry to your workspace
.vscode/mcp.json(a template is included in this repo):
{
"servers": {
"EndpointOps-MCP": {
"type": "stdio",
"command": "${workspaceFolder}/.venv/Scripts/endpointops-mcp.exe",
"args": [],
"env": {
"TENANT_ID": "",
"CLIENT_ID": "",
"CLIENT_SECRET": ""
}
}
}
}On macOS/Linux use
${workspaceFolder}/.venv/bin/endpointops-mcpinstead.You can leave
envempty and rely on a.envfile in the project root instead — the server loads it automatically viapython-dotenv.Alternatively, run the server as a plain module without the console script:
"command": "python", "args": ["-m", "intune_mcp_server"].
Reload the VS Code window (or use the MCP: List Servers command) and the 34 tools listed above will become available to Copilot Chat.
Run
test_connection(orconnect_intune_mcp_server) first to verify authentication before using any other tool.
Claude Desktop / other MCP clients
Add an equivalent entry to your client's MCP server configuration, pointing command at the same executable/module and passing the same environment variables.
HTTP Transport (optional)
In addition to stdio (the default, used by most desktop MCP clients), the server can run over Streamable HTTP for hosted scenarios (e.g. Copilot Studio custom connectors):
uvicorn intune_mcp_server.mcp_app:app --host 0.0.0.0 --port 8000A minimal REST bridge exposing a handful of tools as plain HTTP endpoints is also available in bridge.py (FastAPI) for scenarios that need simple REST calls instead of the native MCP protocol.
Security Notes
Never commit
.envor the MSAL token cache (.msal_token_cache.bin) — both are already excluded via.gitignore.Prefer
AUTH_MODE=appwith a tightly-scoped app registration for automation; reservedelegated/hybridmodes for interactive, human-supervised sessions.Destructive actions (wipe, retire, delete) require
confirm=True— treat any AI client wired to this server with the same caution as a human holding Global Administrator credentials.Grant only the permissions your use case needs; the lists above are the maximum superset for full read/write coverage, not a minimum requirement.
License
MIT © Sujin Nelladath
Available Tools
34 toolsauthenticate_mcp_sessionA
Authenticate the MCP session using the configured .env sign-in flow.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 only states the action but does not disclose side effects (e.g., whether it overwrites existing sessions), prerequisites (e.g., .env file must exist), or idempotency. This is a significant gap for a mutating/auth operation.
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 sentence of eight words, front-loaded with the verb and resource. It is extremely concise and contains no filler or redundant repetition of the name.
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?
The description is adequate for a simple 0-param tool, but it lacks context about when this auth method is appropriate, what happens on success or failure, and how it differs from the many sibling auth-related tools. Given the presence of an output schema, return values need not be explained, but a bit more context would improve completeness.
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 is empty, so there is nothing for the description to add beyond what the schema already conveys. The baseline for 0 params is 4, and the description is consistent with that.
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 uses a specific verb+resource: 'Authenticate the MCP session', and it distinguishes from sibling auth tools by specifying the method ('using the configured .env sign-in flow'). This clearly separates it from interactive sign-in tools like 'start_interactive_sign_in' or 'get_auth_status'.
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 when to use this tool (when you need to authenticate via the configured .env flow) but does not explicitly state when to use it versus alternatives like test_connection or interactive sign-in. There is no mention of exclusions or alternative tool recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_interactive_loginB
Compatibility wrapper that completes the interactive sign-in flow for the MCP session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only mentions being a 'compatibility wrapper' and 'completes the interactive sign-in flow', but does not state side effects, session state changes, or auth requirements, leaving the agent without critical behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundancy. It efficiently states the core purpose, though it is terse and omits behavioral and usage context that would make it more helpful.
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 large set of sibling tools including multiple auth-related ones (start_interactive_sign_in, complete_interactive_sign_in, authenticate_mcp_session), the description is too sparse. It does not explain the relationship to these tools, what 'compatibility wrapper' means, or how the login flow begins, making it inadequate for correct tool selection.
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, so there is nothing to explain. The schema coverage is trivially 100%, and the baseline for 0-parameter tools is 4.
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 action ('completes the interactive sign-in flow') and scope ('for the MCP session'). It is distinguishable from start-related tools, but does not differentiate from the nearly identically named sibling 'complete_interactive_sign_in', so it lacks full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, sequence (e.g., 'use after start_interactive_sign_in'), or contrast with complete_interactive_sign_in or authenticate_mcp_session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_interactive_sign_inA
Complete user sign-in flow after user enters device code.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 mentions the precondition (device code entered) and the action (complete sign-in), but fails to explain what 'complete' entails—such as token exchange, session creation, potential user interaction, or failure modes. The description leaves significant behavioral ambiguity.
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, front-loaded sentence that states the action and context without any wasted words. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and no parameters, the description is minimal but provides the core action and timing. However, it lacks details about the actual flow mechanics, prerequisites beyond the device code, or what the output represents. It is adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is effectively 100%. Per the rubric, a baseline of 4 is appropriate since there are no parameter details to explain.
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 uses a specific verb ('Complete') and resource ('user sign-in flow'), and clearly specifies the condition ('after user enters device code'). This distinguishes it from similar sibling tools like start_interactive_sign_in and complete_interactive_login.
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 clearly indicates the tool is for the second phase of an interactive sign-in, right after the device code has been entered. This provides clear usage context. However, it does not explicitly name alternative tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_intune_mcp_serverA
One-step connection flow: trigger sign-in if needed, then verify Graph connectivity.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It mentions conditional sign-in ('if needed') and verification, but omits behavioral details such as possible interactive prompts, token/cookie side effects, prerequisites, or failure modes. The description is too sparse to fully disclose 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 extremely concise: two short sentences, front-loaded with 'One-step connection flow,' and contains no filler. Every word contributes to understanding the tool's behavior.
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?
The core flow is described, but given the many sibling tools, the description does not explain how this relates to them or whether it requires prior configuration. It also doesn't mention if it blocks on user interaction. However, since an output schema exists, return value details are not necessary.
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 an empty schema, so the description does not need to compensate for schema gaps. The baseline for 0 params is 4, and the description adds no unnecessary parameter detail.
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: 'One-step connection flow: trigger sign-in if needed, then verify Graph connectivity.' It uses a specific verb ('connect') and identifies the resource (Intune MCP server/Graph), distinguishing it from siblings like start_interactive_sign_in and test_connection.
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 phrase 'One-step connection flow' implies this tool is a combined alternative to separate sign-in and verification tools, but it does not explicitly name alternatives or state when to prefer it over authenticate_mcp_session or test_connection. Usage context is implied rather than explicitly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_graph_operationsA
List all supported Graph operations grouped by tool/domain. Optionally filter by category name (e.g., 'devices', 'users', 'policies').
Returns each tool with its name, description and all available action values.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses output structure (each tool with name, description, action values) and the grouping behavior, and 'List' implies a safe read, but it says nothing about authentication requirements, whether results are static or tenant-dependent, or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the primary action front-loaded and no filler. The third sentence about return shape is arguably redundant given an output schema exists, which keeps it from a perfect score.
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 simple one-parameter discovery tool with an output schema present, the description covers purpose, filtering, and return shape adequately. The only real gap is the absent pointer to when this tool should be called relative to the manage_* siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the single parameter. It does so partially by marking the filter as optional and giving concrete example values ('devices', 'users', 'policies'), but it does not state the matching semantics (exact vs partial, case sensitivity) or what an empty default means.
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?
States a specific verb and resource ('List all supported Graph operations') and the scope of grouping ('by tool/domain'). It is clearly distinguishable from the sibling manage_* action tools, which perform mutations rather than discovery.
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?
Usage is implied – this is a discovery/meta tool you call to learn what operations exist before invoking a manage_* tool – but the description never says so explicitly, nor does it state when-not to use it or name an alternative. The optional category filter is the only usage hint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_auth_statusA
Get current authentication mode and sign-in/cache status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. The word 'Get' clearly signals a read-only operation, and there is no mention of side effects. It does not elaborate on prerequisites (e.g., requiring an established session), but as a status getter this is a minor 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 concise sentence that leads with the verb 'Get' and contains no filler. Every word contributes to conveying the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter getter with an output schema, the description provides sufficient information to select and invoke the tool. It could be slightly richer by clarifying whether this reflects live or cached data, but the omission is not critical given the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the empty schema fully defines the inputs. The baseline for 0 params is 4; the description adds no parameter information, but none is needed here.
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 uses a specific verb ('Get') and clearly identifies the resource ('current authentication mode and sign-in/cache status'). This distinguishes it from sibling tools that perform sign-in actions, such as start_interactive_sign_in or complete_interactive_login.
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 it should be used to inspect current authentication state, but it does not explicitly state when to use it vs. alternatives like test_connection or authenticate_mcp_session. No exclusions or alternative tool recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_intune_overviewA
Return device counts, compliance distribution and OS breakdown for the tenant.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It clearly indicates a read-only operation by using 'Return' and lists the output categories. However, it does not disclose potential limitations such as permission requirements, data freshness, or whether the data is aggregated in any particular way.
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, concise sentence that front-loads the verb 'Return' and clearly lists the resource categories. Every word contributes meaning, with no redundancy or filler.
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 that the tool has no parameters and a simple query purpose, the description accurately covers what the tool returns. The presence of an output schema further compensates for any need to detail return values, making the description complete for its 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 and an empty input schema, so the baseline is 4. The description does not need to add parameter details, and it does not introduce any ambiguity.
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 function: 'Return device counts, compliance distribution and OS breakdown for the tenant.' It uses a specific verb and resource, and it is easily distinguishable from sibling tools that focus on management actions (e.g., manage_intune_devices).
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 as an overview tool but does not explicitly state when to use it versus alternatives, nor does it mention any exclusions. Since the purpose is straightforward, the usage context is implied from the name and description, but no explicit guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_admx_policiesA
Manage Intune ADMX (Administrative Templates / Group Policy) configurations.
action values: list — List all ADMX configurations get — Get ADMX config details (config_id) create — Create an ADMX configuration (body) delete — Delete an ADMX configuration (config_id, confirm=True)
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| config_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that delete requires confirm=True, which is a safety-relevant behavioral detail. However, with no annotations and no other context, it does not mention authentication requirements, side effects of create/delete, rate limits, or response handling. This is a moderate level of transparency for a mutation-heavy 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 compact and uses a clear action-value list format. Every line serves a purpose, with no fluff or redundant phrasing. It is easy to scan and understand 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?
The description covers the main operations and their key parameters, which is adequate for a router-style tool. But it omits the 'top' parameter and does not explain what the output contains or how to handle errors. Given the schema coverage is 0%, the description carries a heavier burden and could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the role of config_id, body, and confirm in the context of specific actions, which adds meaning beyond the bare schema. However, the 'top' parameter is not mentioned, and the schema has zero description coverage, so not all parameters are semantically clarified. This partial compensation results in a mid-range score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages Intune ADMX configurations and enumerates four specific actions (list, get, create, delete). This distinguishes it from sibling tools that manage other Intune resources, making the purpose unambiguous and specific.
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 action breakdown implicitly conveys when to use each sub-action, but there is no explicit guidance on when to choose this tool over siblings like manage_configuration_profiles or manage_settings_catalog. It does not state exclusions or alternatives, leaving the context of use somewhat implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_app_config_mamA
Manage app configuration policies and MAM (app protection) policies.
action values: list_config_policies — List all managed app config policies (targeted) get_config_policy — Get a specific app config policy (policy_id) create_config_policy — Create an app config policy (body) update_config_policy — Update an app config policy (policy_id, body) delete_config_policy — Delete an app config policy (policy_id, confirm=True) list_protection_policies — List MAM/app protection policies create_protection_policy — Create an app protection policy (platform: ios|android, body) update_protection_policy — Update an app protection policy (policy_id, platform, body) delete_protection_policy — Delete an app protection policy (policy_id, platform, confirm=True)
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| platform | No | ios | |
| policy_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It does reveal that delete operations require confirm=True and specifies platform constraints (ios|android) for protection policies. However, it does not mention permissions, reversibility, side effects, or auth requirements, so transparency is only partial.
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 well-structured list with a one-sentence summary followed by action entries. Each line is terse and informative, containing the action name, its purpose, and relevant parameters. There is no filler or redundant 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 multi-action tool with 10 operations, the action catalog covers the core invocation semantics and parameter associations. The output schema exists, so return values are not the description's responsibility. However, it lacks usage context and body payload requirements, leaving some gaps for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It maps each action to the relevant parameters (e.g., get_config_policy uses policy_id, delete actions use confirm=True) and specifies valid platform values. However, the 'body' parameter remains generic with no structural details, so it adds significant but not complete semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as 'app configuration policies and MAM (app protection) policies' and then enumerates all specific actions with their verbs (list, get, create, update, delete). This differentiates it from sibling tools by covering a distinct policy domain. The action list provides an unambiguous scope of operations.
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?
There is no explicit guidance on when to use this tool versus sibling tools like manage_intune_apps or manage_compliance_policies. The action list implies usage for app config/MAM tasks, but the description does not state exclusions, alternatives, or typical scenarios. This leaves the agent to infer appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_app_registrationsA
Manage Entra ID app registrations and enterprise apps (service principals).
action values: list_registrations — List all app registrations get_registration — Get app registration details (app_id) search_registrations — Search registrations by name (search_term) delete_registration — Delete an app registration (app_id, confirm=True) get_expiring_credentials — App regs with credentials expiring soon (days_until_expiry) list_enterprise_apps — List all enterprise apps (service principals) get_enterprise_app — Get enterprise app details (sp_id) search_enterprise_apps — Search enterprise apps by name (search_term) get_app_permissions — Permissions granted to an enterprise app (sp_id) enable_enterprise_app — Enable an enterprise app (sp_id) disable_enterprise_app — Disable an enterprise app (sp_id)
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| sp_id | No | ||
| action | Yes | ||
| app_id | No | ||
| confirm | No | ||
| search_term | No | ||
| days_until_expiry | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description carries the burden of behavioral disclosure. It does reveal action-specific parameters (e.g., delete_registration requires confirm=True) and distinguishes mutating operations (delete, enable, disable) from read-only ones. However, it omits consequences, permission requirements, or reversibility of destructive actions, leaving a moderate 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 well-structured: a short overview followed by a bulleted list of action-value pairs. Each line is concise and necessary given the tool's multi-action nature. It could be slightly more compact, but the format is efficient and readable.
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?
The action catalog with parameter hints covers the core usage and leverages the output schema for return values. However, it leaves some input parameters (top, body) unexplained and does not provide context on authentication, pagination, or destructive-action safeguards beyond the confirm flag, so completeness is moderate for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description compensates by mapping each action to its relevant parameters (e.g., search_registrations → search_term, get_expiring_credentials → days_until_expiry). It notably clarifies that confirm=True is needed for deletion, adding meaning beyond the schema's default false. However, parameters like top and body remain undocumented, preventing a 5.
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 begins with 'Manage Entra ID app registrations and enterprise apps (service principals)', clearly stating the tool's scope. The subsequent action list enumerates specific verbs (list, get, search, delete, enable, disable) applied to concrete resources, fully distinguishing it from sibling tools like manage_entra_users or manage_intune_devices.
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 clearly implies the tool is for any app registration or enterprise app management task. However, it does not explicitly provide 'when not to use' guidance or name alternative tools for other Entra ID resources, stopping short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_autopilotA
Manage Windows Autopilot devices and deployment profiles.
action values: list_devices — List all Autopilot device identities list_profiles — List all Autopilot deployment profiles get_profile — Get profile details (profile_id) create_profile — Create an Autopilot deployment profile (body) update_profile — Update a profile (profile_id, body) delete_profile — Delete a profile (profile_id, confirm=True) assign_profile — Assign profile to device/group (profile_id, body) import_device — Import via hardware hash (body: {serialNumber,...}) delete_device — Delete Autopilot device registration (device_id, confirm=True) get_deployment_status — Autopilot deployment events list_esp_profiles — List Enrollment Status Page profiles
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| device_id | No | ||
| profile_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides some behavioral hints, such as delete actions requiring 'confirm=True' and import_device needing a hardware hash. However, with no annotations, it fails to disclose potential side effects, required permissions, or error behavior for most actions, leaving the agent to infer safety profiles.
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 well-structured with a concise purpose statement followed by a bulleted action list. Each line is informative and earns its place, providing quick reference without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with many actions, the description covers all subcommands and their key parameters effectively. However, it omits the 'top' parameter, lacks prerequisites, and doesn't mention authentication or error handling. The presence of an output schema helps cover return values, so the overall completeness is solid but not exhaustive.
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 description adds meaning to the schema by mapping parameters to each action (e.g., 'get_profile' uses profile_id, 'delete_device' uses device_id and confirm). It compensates well for the 0% schema coverage, but the 'top' parameter is never explained, leaving a gap for list operations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages 'Windows Autopilot devices and deployment profiles', using a specific verb and resource. The subsequent action list clarifies all possible operations, distinguishing it from sibling tools like manage_intune_devices.
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 via the action list, covering when to perform each operation (e.g., 'list_devices' for listing, 'create_profile' for creation). It clearly indicates this tool is for Autopilot management, but it does not explicitly mention alternatives or when-not-to-use scenarios, missing the top-level guidance for distinguishing from related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_cloud_pcA
Manage Windows 365 Cloud PCs, provisioning policies and network connections.
action values: list — List all Cloud PCs get — Get Cloud PC details (cloud_pc_id) get_overview — Cloud PC overview/summary restart — Restart a Cloud PC (cloud_pc_id) reprovision — Reprovision a Cloud PC (cloud_pc_id, confirm=True) resize — Resize/upgrade a Cloud PC (cloud_pc_id, body: {targetServicePlanId}) restore — Restore from snapshot (cloud_pc_id, body: {snapshotId}) troubleshoot — Trigger troubleshoot action (cloud_pc_id) list_snapshots — List available snapshots (cloud_pc_id) get_audit_events — Audit event logs list_provisioning_policies — List provisioning policies create_provisioning_policy — Create a provisioning policy (body) assign_provisioning_policy — Assign policy to groups (policy_id, body) list_gallery_images — List gallery images for provisioning list_connections — List Azure network connections
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| policy_id | No | ||
| cloud_pc_id | No | ||
| connection_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden of behavioral disclosure. It lists mutating actions like reprovision, resize, and restore without warning that they may be destructive or disruptive. The 'confirm=True' hint for reprovision is a small nod but does not explain consequences, permissions, or side effects—a significant gap for a management tool with state-changing operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the overall scope, followed by a structured, line-per-action list. Each action line is informative and earns its place, with no filler or redundant 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?
While the action list is thorough, the tool includes multiple destructive or disruptive operations with no warnings about their impact, prerequisites, or error conditions. The description does not explain when to apply each action safely or what safeguards exist beyond a 'confirm' flag. Given the tool's complexity and lack of annotations, this is incomplete for safe autonomous invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the action list compensates by mapping parameters to actions (e.g., 'resize — Resize/upgrade a Cloud PC (cloud_pc_id, body: {targetServicePlanId})'). This gives practical meaning to the 'action' parameter and associated fields. However, 'top' and 'connection_id' are not explained, and the full body structure for create_provisioning_policy is not specified, so it is not fully comprehensive.
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 opens with 'Manage Windows 365 Cloud PCs, provisioning policies and network connections,' clearly identifying the tool's resource domain. It then enumerates 15 distinct actions, making the tool's scope unmistakable and distinguishing it from Intune-focused siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The action list provides useful internal guidance (which parameters go with which action), but it never explicitly states when to prefer this tool over siblings like manage_intune_devices. The Cloud PC context is clear, but no exclusions or alternative tool references are given; usage is implied rather than instructed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_compliance_policiesA
Manage Intune device compliance policies — CRUD, assignment and status.
action values: list — List all compliance policies get — Get compliance policy details (policy_id) create — Create a new compliance policy (body) update — Update a compliance policy (policy_id, body) delete — Delete a compliance policy (policy_id, confirm=True) assign — Assign policy to groups (policy_id, body: {assignments:[...]}) get_status — Get device deployment status for a policy (policy_id) list_assignments — List assignments for a policy (policy_id)
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| policy_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions the delete confirm flag and provides action semantics, but it lacks information about side effects, permissions, reversibility, or error behavior. The transparency is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence purpose followed by a clear bullet-point list of actions with parameters. Every line carries information and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The action list covers the main operations, but the tool is complex (8 actions) and lacks operational context like prerequisites, pagination, or permission requirements. Output schema exists, so return values are covered, but the description could still provide more guidance on action-specific edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add parameter meaning. It does map each action to its parameters (e.g., get uses policy_id, delete uses policy_id + confirm, assign uses policy_id + body with assignments), but it stops short of describing the body structure for create/update or the semantics of `top`.
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 'Manage Intune device compliance policies — CRUD, assignment and status' followed by a detailed action list. This uses a specific verb and resource, making the tool's purpose unambiguous and distinguishing it from siblings like manage_configuration_profiles.
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 action list implies when to use this tool (e.g., when you need to manage compliance policies), but there are no explicit exclusions or alternatives mentioned. Sibling tools exist but the description does not guide the agent on when to choose this over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_conditional_accessA
Manage Entra ID Conditional Access policies and named locations.
action values: list_policies — List all CA policies get_policy — Get CA policy details (policy_id) create_policy — Create a new CA policy (body) update_policy — Update a CA policy (policy_id, body) delete_policy — Delete a CA policy (policy_id, confirm=True) enable_policy — Enable a CA policy (policy_id) disable_policy — Disable a CA policy (policy_id) list_locations — List named locations create_location — Create a named location (body) update_location — Update a named location (location_id, body) delete_location — Delete a named location (location_id, confirm=True)
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| policy_id | No | ||
| location_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that delete actions require 'confirm=True', which is a useful behavioral cue. However, it does not mention permissions, reversibility, or what happens on errors, leaving a meaningful transparency gap for a tool with many mutating actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a concise intro followed by a structured, scannable action list. Every line is informative and there is no redundancy. The front-loaded purpose sentence and the clear list format make it 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?
The description fully enumerates actions and parameter mappings, which is a lot for a complex tool. However, it omits specifics about the 'body' object structure and doesn't clarify operational context (e.g., permissions, rate limits). The presence of an output schema reduces the need to describe return values, but body semantics remain a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It maps each action to the relevant parameters (policy_id, body, confirm, location_id), providing critical action-parameter binding beyond the schema. However, the 'body' parameter is not explained in terms of required fields, leaving some ambiguity for create/update operations.
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 'Manage Entra ID Conditional Access policies and named locations' with a specific verb and resource. The action list further distinguishes it from sibling tools by enumerating exactly what operations are supported, making it easy to identify this tool for CA management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The action list implicitly defines when to use this tool: when you need to manage CA policies or named locations. There is no explicit alternative/exclusion guidance, but the context is clear and no conflicting sibling tool is obvious from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_configuration_profilesA
Manage Intune device configuration profiles — CRUD, assignment and status.
action values: list — List all configuration profiles get — Get profile details (profile_id) create — Create a new profile (body) update — Update a profile (profile_id, body) delete — Delete a profile (profile_id, confirm=True) assign — Assign profile to groups (profile_id, body: {assignments:[...]}) get_status — Get device deployment status (profile_id) list_assignments — List assignments (profile_id)
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| profile_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that 'delete' requires 'confirm=True' and outlines various actions, but it does not mention permissions, side effects, or data mutability beyond 'confirm'. This is some useful context but leaves notable gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-sentence summary followed by a well-structured action list. Every line adds value, and the format makes it easy to scan. No redundant or filler 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?
The tool has 5 parameters and many actions, and the description covers most action-parameter mappings. However, it omits the meaning of 'top', does not detail create/update body structures, and lacks behavior about pagination or return values. While an output schema exists, the description is not fully complete for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. It does explain 'profile_id', 'body', 'confirm', and 'action', and gives an example body for 'assign'. However, 'top' is not described, and 'body' for create/update is not fully specified, leaving part of the semantics unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage Intune device configuration profiles — CRUD, assignment and status.' It uses a specific resource ('device configuration profiles') and enumerates distinct actions, distinguishing it from sibling tools that manage other Intune resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The action list implies when to use each operation, but there is no explicit guidance on when to choose this tool over siblings like manage_compliance_policies or manage_settings_catalog. The resource is clear, but no exclusions or alternative references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_device_encryptionA
Manage device encryption keys and reports.
action values: list_bitlocker_keys — List all BitLocker recovery keys for the tenant get_bitlocker_key — Get a specific BitLocker recovery key with value (key_id) get_filevault_key — Get macOS FileVault recovery key (device_id) get_encryption_report — Export device encryption status report
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| key_id | No | ||
| device_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It mentions 'get_bitlocker_key — Get a specific BitLocker recovery key with value' which implies returning sensitive data, but it does not warn about permission requirements, potential exposure of secrets, or any side effects. There is no mention of rate limits, pagination, or error behaviors. The description is too thin given the lack of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a brief opening statement followed by a clean list of actions with inline explanations. Every line has a purpose, and the format makes it easy to scan. No unnecessary words or redundant 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?
The tool has multiple actions and parameters, an output schema (not shown), and no annotations. The description covers the actions and hints at parameter usage, but it lacks preconditions (e.g., 'requires admin consent'), action-specific parameter requirements, and any mention of what the output looks like. Since an output schema exists, return value explanation is not strictly necessary, but the description should still guide the agent on how to assemble a valid request for each action. It is minimally complete but has gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It does by linking the 'action' parameter to specific operations and indicating which other parameters are relevant (key_id for get_bitlocker_key, device_id for get_filevault_key). However, it does not explicitly define the type or purpose of key_id/device_id beyond the action context, and it does not state that action is required. Still, it adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage device encryption keys and reports.' It then lists four specific actions (list_bitlocker_keys, get_bitlocker_key, get_filevault_key, get_encryption_report), each with a concise one-line explanation. This distinguishes it from sibling tools like manage_intune_devices or manage_intune_reports by focusing on encryption-specific operations.
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 when to use this tool (for BitLocker/FileVault keys and encryption reports) but does not explicitly state when to choose this tool over alternatives, nor does it explain how to choose between the listed actions beyond their names. There are no exclusions or alternative tool references. Usage guidance is mostly implicit from the action descriptions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_endpoint_securityB
Manage Intune endpoint security policies (Antivirus, Firewall, EDR, etc.).
action values: list_policies — List all endpoint security policies get_policy — Get policy details (policy_id) create_policy — Create from a template (template_id, body) update_policy — Update an endpoint security policy (policy_id, body) delete_policy — Delete a policy (policy_id, confirm=True) assign_policy — Assign to groups (policy_id, body: {assignments:[...]}) get_policy_status — Device state summary for a policy (policy_id) list_templates — List all security templates
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| policy_id | No | ||
| template_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits itself. It lists mutating actions (create, update, delete, assign) without warnings about destructive side effects, required permissions, or that delete requires confirm=True. This is a significant gap for a tool that modifies 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 compact, well-organized list of actions with one-line explanations. No fluff; each line earns its place. The leading sentence establishes the domain, and the action list is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, multiple actions, complex body objects), the description lacks critical details: the shape of body for create/update, the effect of 'top', error conditions, or permission requirements. While an output schema exists, the input body is largely undefined, leaving the agent to guess. This is insufficient for a tool with such a broad surface.
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 schema has 0% description coverage, but the description compensates well by mapping each action to the relevant parameters (e.g., 'create_policy — (template_id, body)', 'delete_policy — (policy_id, confirm=True)', 'assign_policy — body: {assignments:[...]}'). However, it omits the 'top' parameter entirely and gives no details on the 'body' structure for create/update actions.
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 domain ('Manage Intune endpoint security policies') and lists the specific action verbs (list, get, create, update, delete, assign, get status, list templates), making the purpose unambiguous. It distinguishes from siblings by focusing on endpoint security, though it doesn't explicitly contrast with overlapping tools like manage_security_baselines.
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 action list implicitly tells the agent when to use each action (e.g., 'create_policy — Create from a template'), providing practical usage guidance. However, it does not explicitly state when to use this tool versus sibling tools like manage_configuration_profiles or manage_security_baselines, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_entra_devicesA
Manage Entra ID device objects (separate from Intune managed devices).
action values: list — List all Entra ID devices get — Get device details (device_id) search — Search by displayName (search_term) enable — Enable a device in Entra ID (device_id) disable — Disable a device in Entra ID (device_id) delete_entra — Delete device from Entra ID (device_id, confirm=True) delete_intune — Delete device from Intune (intune_device_id, confirm=True) delete_both — Delete from both Intune and Entra (device_id + intune_device_id, confirm=True)
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| action | Yes | ||
| confirm | No | ||
| device_id | No | ||
| search_term | No | ||
| intune_device_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 explicitly requires confirm=True for all delete actions, which is critical safety context. It also clarifies that this tool manages Entra ID objects separately from Intune. However, it does not elaborate on side effects of enable/disable, irreversibility of deletions, or permission requirements, but the action names and confirm flags provide a reasonable baseline for a management 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 well-structured with a clear one-line purpose followed by a compact action list. Each action is presented on its own line with a concise explanation and required parameters. There is no redundant or filler text; every sentence and line adds value. It is easy to scan and quickly understand the tool's capabilities.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, 8 distinct actions), the description covers all key usage aspects: what each action does and which parameters it needs. The output schema exists, so return values do not need to be in the description. Minor gaps include no mention of the 'top' parameter being used by 'list' and lack of explicit permission or side-effect details, but overall it is sufficient for an agent to invoke the tool 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 schema has 0% description coverage, so the description is the sole source of parameter meaning. It thoroughly explains the purpose of each parameter by associating them with specific actions: device_id for get/enable/disable/delete_entra, search_term for search, intune_device_id for delete_intune/delete_both, and confirm=True with delete actions. This goes far beyond the schema's bare titles and effectively documents parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages Entra ID device objects and explicitly distinguishes them from Intune managed devices. The action list provides specific verbs (list, get, search, enable, disable, delete_entra, delete_intune, delete_both) with clear targets, making the purpose unambiguous and differentiated from sibling tools like manage_intune_devices.
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 implicitly provides usage guidance by distinguishing Entra ID devices from Intune managed devices and listing the available actions with their associated parameters. It does not explicitly state when to use this tool over siblings, but the separation note and action list give a clear context for selection. No explicit exclusions or alternative tool references are provided beyond the 'separate from Intune' note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_entra_groupsA
Manage Entra ID groups — full CRUD plus membership and ownership operations.
action values: list — List all groups get — Get group details (group_id) search — Search groups by displayName (search_term) create_security — Create a security group ONLY after user confirms (body, confirm=True) create_m365 — Create a Microsoft 365 group ONLY after user confirms (body, confirm=True) create_dynamic — Create a dynamic security group ONLY after user confirms (body, confirm=True) update — Update group properties (group_id, body) delete — Delete a group (group_id, confirm=True) get_members — List group members (group_id) add_member — Add a member (group_id, member_id) remove_member — Remove a member (group_id, member_id) get_owners — List group owners (group_id) add_owner — Add an owner (group_id, member_id) bulk_add_members — Add multiple members (group_id, body: {member_ids:[...]})
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| group_id | No | ||
| member_id | No | ||
| search_term | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the confirm-gating on the four create variants and delete, which is genuine behavioral value beyond structure. It does not say whether delete is permanent/reversible, whether member/owner removals need confirmation, or any permission requirements, so a mutation-heavy tool remains partially opaque.
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?
One framing sentence followed by an action-by-action mapping is well front-loaded and scannable, with no filler prose. The repeated '(group_id)' parentheticals are slightly repetitive but each list line carries information an agent needs.
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?
Because an output schema exists, return values need not be described, and the description correctly focuses on action/parameter routing for a 14-action tool. It is close to complete, but the undocumented `top` parameter and the undefined body fields for create/update leave the highest-complexity actions under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate — and it largely does by mapping group_id, member_id, search_term, body, and confirm to the actions that consume them, even documenting the body shape for bulk_add_members. However, the `top` parameter (default 50) is never mentioned, and the `body` payload for create_security/create_m365/update is left as an opaque object, leaving real 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 first sentence gives a specific verb, resource, and full scope: 'Manage Entra ID groups — full CRUD plus membership and ownership operations.' The resource ('Entra ID groups') cleanly separates it from siblings like manage_entra_users and manage_entra_devices, and the 14 action values make the surface area unambiguous.
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?
Each action line names the parameters it needs and, for the risky ones, an explicit pre-condition ('create_security — Create a security group ONLY after user confirms'). That routes an agent correctly among the 14 actions. It never states when to prefer this tool versus sibling tools such as manage_entra_users, nor any 'when not to use', so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_entra_usersA
Manage Entra ID users — full lifecycle including licenses, manager, onboarding and offboarding.
action values: list — List all users (top) get — Get user details (user_id or UPN) search — Search users by displayName (search_term) create — Create a new user (body) update — Update user properties (user_id, body) delete — Delete a user (user_id, confirm=True) enable — Enable user account (user_id) disable — Disable/block user sign-in (user_id) reset_password — Reset user password (user_id, body: {newPassword, forceChangeAtNextSignIn}) revoke_sessions — Revoke all user refresh tokens (user_id) get_devices — List managed devices for a user (user_id) get_licenses — Get license assignments (user_id) assign_license — Assign a license (user_id, body: {addLicenses:[{skuId}], removeLicenses:[]}) remove_license — Remove a license (user_id, body: {addLicenses:[], removeLicenses:[skuId]}) list_available_licenses — List available license SKUs in tenant get_deleted_users — List recently deleted users restore_user — Restore a deleted user (user_id) assign_manager — Set user's manager (user_id, body: {"@odata.id": managerUrl}) remove_manager — Remove user's manager (user_id) get_direct_reports — List user's direct reports (user_id) get_member_groups — List groups the user belongs to (user_id) onboard_user — Full onboard: create + manager + license + group membership (body) offboard_user — Full offboard: disable + revoke sessions + remove groups (user_id, confirm=True) bulk_create — Create multiple users from a list (body: {users: [...]}) bulk_assign_license — Assign license to multiple users (body: {user_ids:[...], skuId:...})
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| user_id | No | ||
| search_term | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does flag destructive actions with 'confirm=True' (delete, offboard) and clearly states operations like 'revoke_sessions' and 'disable', which implies irreversible or security-sensitive effects. However, it lacks explicit caveats about permanence, required admin privileges, or potential cost implications for license assignments, so it only partially compensates for missing annotations.
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 efficiently structured as a summary line followed by a line-per-action list. It packs a large amount of actionable information without redundant prose. Each line is concise and directly useful, making it easy to scan and parse for model or human use.
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 (26 actions, 6 parameters, 0% schema coverage), the description fully enumerates all actions and their required parameters. The presence of an output schema means return values need not be described. The description covers onboarding/offboarding, bulk operations, licenses, and more, making it complete for selecting the correct action and inputs.
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 schema provides zero descriptions (0% coverage), but the tool description compensates thoroughly. For every action, it lists the relevant parameters, including exact body structures for complex actions like reset_password (body: {newPassword, forceChangeAtNextSignIn}) and assign_license (body: {addLicenses:[{skuId}], removeLicenses:[]}). This is exemplary parameter documentation 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 'Manage Entra ID users — full lifecycle including licenses, manager, onboarding and offboarding.' This uses a specific verb, resource, and scope, and differentiates from sibling tools like manage_entra_groups and manage_entra_devices by focusing on user lifecycle operations.
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 clear context by enumerating 26 distinct actions, each with its own use case (list, get, create, delete, etc.). However, it does not explicitly state when not to use this tool or mention alternative sibling tools for overlapping features like group membership or license management, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_filters_tagsA
Manage Intune assignment filters and scope tags.
action values: list_filters — List all assignment filters get_filter — Get filter details (filter_id) create_filter — Create an assignment filter (body) update_filter — Update a filter (filter_id, body) delete_filter — Delete a filter (filter_id, confirm=True) list_tags — List all scope tags create_tag — Create a scope tag (body) delete_tag — Delete a scope tag (tag_id, confirm=True)
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| tag_id | No | ||
| confirm | No | ||
| filter_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It does mention 'confirm=True' for delete actions, hinting at a safety mechanism, but it does not disclose side effects, permission requirements, or error behavior. The action names are self-explanatory but lack depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a concise, well-structured list of action values with inline parameter hints. Every line is purposeful, and the purpose statement is front-loaded. No filler or redundant 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?
The description lists all actions and their parameters, which is good for a multi-action tool. However, it omits details about 'top', 'body' semantics, and any prerequisites or return values. While an output schema exists, the lack of explanation for 'body' and the optional top parameter leaves some contexts incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does by mapping actions to parameters (e.g., 'get_filter — Get filter details (filter_id)', 'delete_filter — Delete a filter (filter_id, confirm=True)'), which is highly valuable. However, 'top' is not mentioned, and 'body' is not described in terms of structure or required fields, leaving 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 'Manage Intune assignment filters and scope tags' with a specific verb and resource, and lists all actions (list_filters, get_filter, create_filter, etc.), making the tool's purpose unmistakable and distinguishing it from sibling tools like manage_intune_rbac or manage_intune_apps.
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 action list provides clear context for when to use the tool (e.g., for managing assignment filters or scope tags), but it does not explicitly mention alternatives or exclusions. The domain is specific enough that an agent can infer usage, though explicit guidance would improve it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_identity_protectionA
Manage identity protection, authentication methods, sign-in logs and risky users.
action values: get_auth_methods — List authentication methods for a user (user_id) get_mfa_status — Check MFA registration status for a user (user_id) delete_auth_method — Remove an authentication method (user_id, method_id, confirm=True) get_auth_methods_policy — Get tenant-wide authentication methods policy get_sign_in_logs — Sign-in logs (filter_query for OData filter, top) get_directory_audit_logs — Directory audit logs (filter_query, top) get_risky_users — List risky users get_risk_detections — Get risk detection events dismiss_risky_user — Dismiss risk for a user (body: {userIds: [...]}) confirm_compromised — Confirm users as compromised (body: {userIds: [...]})
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| user_id | No | ||
| method_id | No | ||
| filter_query | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It provides useful action-specific details, such as confirm=True for delete_auth_method and the body structure for dismiss_risky_user/confirm_compromised, but it does not disclose potential side effects, required permissions, or irreversibility of mutation actions. This is a moderate level of 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 highly structured with a clear purpose line followed by a concise action list. Each line is short and includes the relevant parameters, avoiding redundancy. The format is easy to parse and front-loads the most critical 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?
The tool is complex with 10 actions, but the description covers all actions and links parameters to each. Some actions like get_risk_detections only say 'Get risk detection events' without noting applicable parameters, but the output schema covers return values. Overall, the description is reasonably complete for the tool's size, though minor gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it explains the action parameter values and shows how parameters like user_id, method_id, filter_query, and body are used per action. It does not define every parameter globally (e.g., top is only mentioned in log actions), but it adds substantial meaning beyond the bare 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 it manages identity protection, authentication methods, sign-in logs, and risky users. The action list gives concrete sub-operations, making the tool's scope unambiguous. However, 'manage' is a broad verb and it doesn't explicitly contrast with sibling tools like manage_entra_users or manage_conditional_access, so it doesn't fully capitalize on differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the action list: use this tool for identity protection tasks like auth methods, sign-in logs, and risky users. The description does not explicitly state when to choose this over sibling tools, nor does it mention exclusions. Given the lack of explicit alternatives, the guidance is adequate but not strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_intune_appsA
Manage Intune mobile apps — full CRUD, search, assignments and install status.
action values: list — List all mobile apps (top) get — Get app details + assignments (app_id) search — Search apps by display name (search_term) create — Raw Graph app registration (body); for complete EAM acquisition/ Win32 packaging use plan_lifecycle, not metadata-only creation. update — Update app metadata (app_id, body) delete — Delete an app (app_id, confirm=True) assign — Assign app to groups (app_id, body: {assignments:[...]}) remove_assignment — Remove one assignment (app_id, assignment_id, confirm=True) get_install_status — Get app install summary (app_id) list_discovered — List all apps discovered across managed devices get_mam_registrations — List managed app registrations (MAM enrollment) plan_lifecycle — Stage EAM-first acquisition/Win32 packaging (body). Required: app_name, publisher, version. No groups means CREATE ONLY. Optional: catalog_package_id; source {artifacts:[{filename,url,sha256}], scripts:[{filename,content}],setup_file}; win32 {description, install_command,uninstall_command,detection_path,detection_file, detection_version,architecture,minimum_windows_release,install_context}; evidence_urls. Use group_ids/group_names OR reuse_scope_from_app_id to propose assignments. Research official install instructions first. Never guess switches, versions or hashes. No tenant writes in planning. discover_deployment_scope — Read existing group assignments/filters/settings (app_id). Never invent a target or create groups without user confirmation. get_lifecycle_plan — Review immutable plan (plan_id); operator CLI approves exact digest. queue_lifecycle — Queue operator-approved plan (plan_id, plan_digest, confirm=True). Separate Windows worker performs writes. No inline packaging. get_lifecycle_job — Read durable worker result and partial-resource IDs (job_id).
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| app_id | No | ||
| job_id | No | ||
| confirm | No | ||
| plan_id | No | ||
| plan_digest | No | ||
| search_term | No | ||
| assignment_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description must carry behavioral disclosure; it states confirm requirements for delete, remove_assignment, and queue_lifecycle, notes that planning performs no tenant writes, and explains that an operator-approved digest and separate Windows worker handle queued writes. It does not cover permissions/auth expectations, rate limits, or side effects of create/update/assign beyond the confirm gates.
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 long but justified by 13 distinct action values; the opening summary is front-loaded and the action list is organized as a compact reference. Each line generally earns its place by defining an action or a safety constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex multi-action tool with an output schema, the description covers the action surface, lifecycle planning safety, confirmation gates, and plan/job workflow. Remaining gaps are mostly fine-grained parameter formats and authentication context, which are secondary given the output schema and action-level 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?
Schema coverage is 0%, so the description must explain the 10 parameters; it maps nearly every parameter to specific actions, including app_id, search_term, body, plan_id, plan_digest, job_id, assignment_id, confirm, and top. It gives useful body detail for assign and plan_lifecycle, but create/update body semantics remain vague and formats/defaults for app_id, search_term, and top are not elaborated.
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 first sentence names a specific resource (Intune mobile apps) and enumerates CRUD, search, assignment, and install-status capabilities; the action list then defines each operation. It also distinguishes metadata-only create from the broader plan_lifecycle path, helping an agent select the right operation.
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 action list explicitly maps each action to its purpose and key parameters, and it states that complete EAM/Win32 packaging should use plan_lifecycle rather than create. It adds concrete procedural guidance such as 'No groups means CREATE ONLY' and 'Research official install instructions first; never guess switches, versions or hashes.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_intune_devicesA
Manage Intune managed devices. All device lifecycle and action operations.
action values: list — List all managed devices (supports filter_query, top) get — Get full device details (requires device_id) search — Search by deviceName/userPrincipalName/serialNumber (search_term, search_by) get_noncompliant— List non-compliant devices get_stale — Devices inactive for N days (days_inactive) get_hardware — Hardware inventory for a device (device_id) get_network — Network info (MAC, subnet) for a device (device_id) get_installed_apps — Apps detected on a device (device_id) get_compliance_states — Compliance policy states for a device (device_id) get_log_requests — Diagnostic log collection requests for a device (device_id) sync — Trigger sync on a device (device_id) bulk_sync — Sync a list of devices (body: {device_ids: [...]}) restart — Restart a device remotely (device_id) lock — Remote lock a device (device_id) rename — Rename a device (device_id, body: {deviceName: "..."}) locate — Trigger GPS location on a device (device_id) reset_passcode — Reset passcode on iOS/Android (device_id) bypass_activation_lock — Bypass iOS Activation Lock (device_id) enable_lost_mode — Enable iOS Lost Mode (device_id, body: {message,phoneNumber,footer}) disable_lost_mode — Disable iOS Lost Mode (device_id) collect_diagnostics— Collect device diagnostics/logs (device_id) defender_scan — Trigger Windows Defender scan (device_id, body: {quickScan: true/false}) defender_update_signatures — Update Defender signatures (device_id) clean_device — Clean Windows device; body: {keepUserData: bool} (device_id, confirm=True) delete — Delete device from Intune (device_id, confirm=True) wipe — Factory reset / wipe device (device_id, confirm=True) retire — Retire device / remove company data (device_id, confirm=True)
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| device_id | No | ||
| search_by | No | deviceName | |
| search_term | No | ||
| filter_query | No | ||
| days_inactive | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It discloses that certain destructive actions require 'confirm=True' (e.g., wipe, delete, retire), and it lists action-specific parameters. However, it does not elaborate on permission requirements, side effects, irreversibility, or failure behavior beyond the confirm flag. This is partial disclosure but leaves gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured as a bulleted action list, front-loaded with a one-sentence purpose. Each line is informative and scannable, though the total length is considerable. It earns a high score because every line adds value, but it could be more concise by grouping similar operations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (dozens of actions), the description covers all operations and their specific parameters, which is essential for correct invocation. It does not explain return values, but an output schema exists, so that is not required. It briefly mentions 'confirm=True' for destructive actions but not authentication or broader context. Overall, it is quite complete for a tool of this scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so exceptionally by mapping each action to its required parameters (e.g., 'get requires device_id', 'bulk_sync body: {device_ids: [...]}'). This adds substantial meaning beyond the bare input schema, which only lists parameters without descriptions.
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 'Manage Intune managed devices. All device lifecycle and action operations,' providing a specific verb+resource+scope. It distinguishes itself from sibling tools by enumerating a comprehensive list of actions, making the tool's purpose unambiguous.
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 through the phrase 'All device lifecycle and action operations,' but it does not explicitly state when to choose this tool over alternatives like manage_entra_devices or manage_intune_reports. No exclusions or alternative recommendations are provided, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_intune_enrollmentA
Manage Intune enrollment restrictions, Apple VPP/DEP tokens, and Android Enterprise.
action values: list_restrictions — List device enrollment configurations/restrictions create_restriction — Create an enrollment restriction (body) update_restriction — Update an enrollment restriction (config_id, body) delete_restriction — Delete a restriction (config_id, confirm=True) assign_restriction — Assign restriction to groups (config_id, body) list_vpp_tokens — List Apple VPP tokens get_vpp_token — Get a VPP token (token_id) sync_vpp_token — Sync a VPP token (token_id) list_dep_tokens — List Apple DEP/ADE onboarding settings sync_dep_token — Sync a DEP/ADE token (token_id) list_android_enterprise — List Android Enterprise account settings get_failures_report — Export enrollment failures report list_dep_profiles — List enrollment profiles for a DEP token (token_id)
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| token_id | No | ||
| config_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavioral traits. It lists actions and hints at parameter constraints (e.g., confirm=True for delete), but it does not describe side effects, required permissions, potential dangers (like permanent deletion), or prerequisites for actions like syncing VPP/DEP tokens. This is a significant gap for a tool that includes destructive operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a well-structured, concise list of actions with brief explanations. It is front-loaded with a general purpose statement and presents each action as a simple line item, making it easy to scan and parse. There is no wasted text.
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?
The description comprehensively enumerates all major actions and their associated parameters, which is critical for a multi-operation tool. It even indicates the need for a confirm flag on deletion. However, it lacks higher-level context about enrollment workflows, prerequisites, or how the actions relate to one another. Given no output schema details, this is a reasonable but not exhaustive description.
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 schema has zero parameter descriptions, so the action list becomes essential for understanding how parameters like body, config_id, token_id, and confirm are used. The descriptions link each parameter to relevant actions. However, 'top' is not explained in any action, and some actions lack detailed parameter semantics, leaving room for improvement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages Intune enrollment restrictions, Apple VPP/DEP tokens, and Android Enterprise, and enumerates specific actions. This distinguishes it from sibling tools focused on devices, apps, or compliance. However, the verb 'manage' is generic, and the overall scope is not as sharply defined as a tool with a more specific action verb.
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 action list and the 'Manage Intune enrollment' phrasing imply this tool is for enrollment-related tasks, but there is no explicit guidance on when to use this tool instead of alternatives. It does not state exclusions or reference sibling tools, leaving the agent to infer usage from the tool name and action list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_intune_rbacA
Manage Intune RBAC role definitions and role assignments.
action values: list_roles — List all role definitions (built-in + custom) get_role — Get role definition details (role_id) create_role — Create a custom role (body) update_role — Update a custom role (role_id, body) delete_role — Delete a custom role (role_id, confirm=True) list_assignments — List all role assignments create_assignment — Assign role to user/group with scope (body) delete_assignment — Remove a role assignment (assignment_id, confirm=True) list_resource_operations — List all available RBAC resource actions (permission strings)
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| role_id | No | ||
| assignment_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden for behavioral disclosure. It reveals that delete_role and delete_assignment require confirm=True, which is useful context for destructive operations. However, it does not mention side effects, permission requirements, or rate limits, leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a summary line followed by a bulleted list of actions. Each line is informative and necessary, and the format makes it easy to scan. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is complex with 9 distinct actions, the description provides a high-level overview but omits details about body structures, return values, and edge-case behaviors. It is a useful starting point but not sufficient for an agent to invoke all actions without additional information.
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 0% schema description coverage, the description adds meaning to action, role_id, assignment_id, and confirm by linking them to specific actions. However, 'body' is only vaguely described as the content for create/update, and 'top' is never explained. The description partially compensates for the schema gap but does not fully document all 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 manages Intune RBAC role definitions and assignments, with a specific list of actions (e.g., list_roles, get_role, create_role). This distinguishes it from sibling tools like manage_intune_devices or manage_entra_users, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates usage via the action list (e.g., 'create_role' for role creation), but provides no explicit guidance on when to use this tool versus alternatives, nor does it mention exclusions or prerequisites (e.g., required permissions or when to prefer a different management tool).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_intune_reportsC
Intune reports, endpoint analytics and export jobs.
action values: compliance_report — Device compliance summary config_profile_status — Deployment status for a config profile (policy_id) compliance_policy_status — Deployment status for a compliance policy (policy_id) app_install_status — App install summary (app_id) license_usage — License usage summary hardware_inventory — Hardware inventory export job malware_report — Windows protection / malware state malware_on_device — Detected malware on a device (device_id) device_protection_overview — Device protection status overview endpoint_analytics_score — Endpoint Analytics baseline scores startup_performance — Device startup performance data app_reliability — Application reliability/crash scores work_from_anywhere — Work From Anywhere readiness report app_inventory — App inventory across all devices certificate_report — Device certificate status report co_management_report — Co-management eligibility/status encryption_report — Device encryption status export enrollment_failures — Enrollment failures report
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| app_id | No | ||
| device_id | No | ||
| policy_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 behavioral burden. It labels two actions as 'export job' but never says whether jobs are async, whether polling is required, what permissions are needed, or that most actions are read-only reads while exports trigger background work.
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 one-line scope statement is front-loaded, and the action list is compact and scannable with aligned glosses. It is long by necessity for 18 actions, but every line carries information and there is no filler prose.
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?
An output schema exists, so return values need not be described. But for a multi-action tool with no annotations and undocumented shared parameters (top, body), the description leaves gaps around pagination behavior and the export-job lifecycle that an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it partially does by mapping policy_id, app_id, and device_id to the specific actions that require them. However, the top and body parameters are never explained, and the action values are not enforced as an enum in the schema, so the mapping is the only guardrail.
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?
States a specific resource (Intune reports, endpoint analytics, export jobs) and enumerates 18 named actions, each with a short gloss. An agent can identify what this tool covers versus device/app/policy management siblings, though it never explicitly names an alternative tool.
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 action list implies which action maps to which report, but there is no explicit when-to-use guidance, no when-not guidance, no prerequisites, and no pointer to sibling tools for adjacent tasks. Usage is left to inference from action names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_intune_scriptsA
Manage Intune PowerShell scripts, proactive remediations and macOS shell scripts.
script_type: powershell | remediation | macos
action values: list — List scripts (script_type) get — Get script details (script_id, script_type) create — Upload a new script (body, script_type) update — Update a script (script_id, body, script_type) delete — Delete a script (script_id, script_type, confirm=True) assign — Assign a script to groups (script_id, body, script_type) get_status — Device run states for a script (script_id, script_type)
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| script_id | No | ||
| script_type | No | powershell |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses action-specific requirements, notably confirm=True for delete, and the valid script_type values. It could add warnings about side effects of update/assign, but it covers the most critical destructive 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 uses a compact action table format, with each line earning its place by showing which parameters apply. It is longer than two sentences but structured efficiently; no filler exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with seven actions and six parameters, the description defines the operation matrix almost fully. The `top` parameter is left to the schema, and an output schema exists to cover result format. Minor gaps around pagination and edge cases prevent a perfect score.
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 schema has 0% description coverage, but the description fully compensates by mapping each action to its required parameters and defining the script_type enum (powershell, remediation, macos). This goes far beyond the bare schema, providing essential semantic meaning.
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 identifies the resource (Intune scripts, remediations, macOS shell scripts) and the verb 'Manage', then enumerates seven concrete actions. This makes it distinctly different from sibling tools like manage_intune_apps or manage_intune_devices.
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 first line states the scope, and the action list implies when to use it (any script management need). It does not explicitly say when not to use it or name alternatives, but the context is unambiguous enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_security_baselinesA
View Intune security baseline templates and deployed profiles.
action values: list_templates — List all security baseline templates list_profiles — List deployed security baseline profiles get_status — Get device deployment status for a profile (profile_id)
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| action | Yes | ||
| profile_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'View' clearly implies read-only operations, and the three action descriptions reinforce this. It also discloses that get_status requires a profile_id. It doesn't explicitly state 'no changes are made' or mention permissions, but for a read-only tool the behavior is adequately conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a summary line followed by a simple bulleted action list. It avoids unneeded words, though the action list slightly rephrases the summary. Overall, it is 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?
The tool has multiple actions and three parameters, and the description explains each action's purpose. An output schema exists, so return values are covered. The main gap is the undocumented top parameter, but this does not significantly hinder the agent's ability to use the tool correctly for its core reading operations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It fully explains the action parameter by listing valid values with meanings, and clarifies that profile_id is used for get_status. However, the top parameter is left undocumented in both the schema and description, creating a gap for the agent.
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 'View Intune security baseline templates and deployed profiles' and enumerates three specific actions (list_templates, list_profiles, get_status), clearly identifying the resource and operations. This distinguishes it from sibling manage_* tools which target other Intune domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening line provides clear context: use this tool when needing to view security baseline templates/profiles. However, it does not explicitly mention alternatives or exclusions, though the sibling tool names make the domain scoping obvious. A more explicit 'use X for Y' would raise this to a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_settings_catalogA
Manage Intune settings catalog configuration policies.
action values: list — List all settings catalog policies get — Get policy details (policy_id) create — Create a settings catalog policy (body) update — Update a settings catalog policy (policy_id, body) delete — Delete a policy (policy_id, confirm=True) assign — Assign policy to groups (policy_id, body: {assignments:[...]})
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| policy_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions `confirm=True` for delete, hinting at a confirmation mechanism, but does not disclose side effects, permissions, or whether actions are destructive/reversible. For a tool with create/update/delete/assign, this is insufficient 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 efficiently structured as a compact action list with parameter hints, using minimal words while covering all major actions. No fluff, and the line-by-line format improves scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-action tool with 5 parameters and no annotations, the description covers the core operations and parameter relationships. It does not explain return values or errors, but an output schema exists which likely covers that. It gives enough context for an agent to select and invoke the tool, though it could mention prerequisites or failure modes.
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 description adds significant meaning beyond the schema by mapping each action to required parameters (e.g., `get (policy_id)`, `assign (policy_id, body:{assignments:[...]})`). Since schema descriptions are absent (0% coverage), this compensation is valuable, though `top` is not explained and `body` structure is only partially detailed.
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 resource ('Intune settings catalog configuration policies') and lists specific actions (list, get, create, update, delete, assign), making the tool's functionality evident. It distinguishes from siblings like manage_configuration_profiles by focusing on the settings catalog, though the broad verb 'manage' is slightly generic.
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 action list implies when to use the tool (e.g., use `list` to list policies, `delete` to delete), but there is no explicit guidance on when to choose this over sibling tools like manage_configuration_profiles or manage_admx_policies. Context is clear but no exclusions or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_tenant_adminC
Tenant administration — org info, service health, directory roles, subscriptions, terms of use.
action values: get_org_info — Get organization/tenant information get_domains — List tenant domains get_service_health — M365 service health status overview get_service_issues — Current/recent service issues get_message_center — Message center posts/advisories get_planned_maintenance — Planned maintenance events list_directory_roles — List active directory roles get_role_members — List members of a directory role (role_id) get_global_admins — List Global Administrator members assign_directory_role — Assign directory role to user/group (role_id, body) remove_directory_role_member — Remove member from role (role_id, member_id, confirm=True) get_subscriptions — List subscribed license SKUs get_security_defaults — Check security defaults status list_terms_of_use — List Terms of Use agreements create_terms_of_use — Create a Terms of Use agreement (body) get_cross_tenant_policy — Get cross-tenant access (B2B) policy
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| role_id | No | ||
| member_id | No | ||
| agreement_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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, and it mostly lists one-line action summaries without revealing consequences. It does hint at safety semantics for 'remove_directory_role_member — Remove member from role (role_id, member_id, confirm=True)', implying confirmation is needed, but it never states whether writes are destructive, reversible, permission-gated, or what side effects occur. Read vs. write actions are identifiable only through verbs (get/list vs. assign/remove/create), not explicit disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long (16 lines) but every line earns its place by naming a distinct action with a terse, scannable format. The front-loaded overview sentence orients the reader, and the bulleted action list is well-structured for an agent to parse. It is arguably the minimum viable length for a dispatcher with this many operations, though it could be tightened with grouped headers (e.g., 'Read actions' vs. 'Write actions').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the tool has zero schema parameter descriptions, no annotations, and 16 actions, placing a heavy burden on the description. The description omits critical context such as which actions are read-only versus mutating (beyond verb inference), required permissions, what top controls, what body should contain, and what agreement_id refers to. It also makes no cross-references to sibling tools where overlapping functionality (e.g., directory roles vs. manage_entra_users) might cause confusion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it partially does by mapping parameters to actions: role_id appears in get_role_members and assign_directory_role, member_id/confirm in remove_directory_role_member, and body in assign_directory_role and create_terms_of_use. However, top, body, and agreement_id remain unexplained in general, and the description does not clarify formats, defaults, or constraints for these parameters. This is meaningful but incomplete compensation for a schema with zero descriptions.
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 identifies the tool as 'Tenant administration' covering org info, service health, directory roles, subscriptions, and terms of use, with 16 distinct action values each containing a specific verb+resource (e.g., 'list_directory_roles', 'assign_directory_role'). This distinguishes it from sibling tools like manage_entra_users or manage_entra_groups by focusing on tenant-wide administrative domains. However, the top-level phrasing 'Tenant administration' is somewhat broad, and the full scope only emerges from reading the action list.
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 explicit guidance on when to choose this tool over alternatives, no exclusions, and no references to sibling tools. Usage context must be inferred from the action names and the high-level phrase 'Tenant administration' — e.g., an agent must guess that directory role management belongs here rather than in manage_entra_users or manage_entra_groups. This absence of when/when-not guidance is a clear gap for a 16-action dispatcher.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_windows_updateA
Manage Windows Update rings and feature/quality/driver update profiles.
action values: list_update_rings — List all Windows update rings get_update_ring — Get update ring details (policy_id) create_update_ring — Create an update ring (body) update_update_ring — Modify an update ring (policy_id, body) delete_update_ring — Delete an update ring (policy_id, confirm=True) list_feature_updates — List Windows feature update profiles get_feature_update — Get a feature update profile (policy_id) create_feature_update — Create a feature update profile (body) list_quality_updates — List quality/expedite update policies list_driver_updates — List driver update profiles
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| body | No | ||
| action | Yes | ||
| confirm | No | ||
| policy_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, behavioral disclosure falls entirely on the description. The action list does indicate the nature of each operation (e.g., delete_update_ring with confirm=True hints at destructive potential), and parameter annotations in parentheses clarify required inputs. Yet it doesn't disclose side effects, permission requirements, or consequences of create/update/delete actions beyond their names. For a tool that manages update rings, this is a moderate 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 highly efficient, opening with a one-sentence purpose and then a tight list of actions with inline parameter hints. Each line is self-contained and avoids redundant phrasing. No filler text or unnecessary elaboration, making it easy to scan.
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?
With 10 distinct actions and 5 parameters, the description covers the action space completely, but the missing details about 'body' structure and 'top' semantics leave gaps for an agent to execute correctly. The output schema presumably covers return types, so that is not a penalty, but the tool's complexity demands more guidance on request construction and side-effect behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must interpret the parameters. It does explain which action uses which parameter (e.g., policy_id for get/update/delete, body for create/update, confirm for delete), adding essential mapping. However, it leaves 'body' as an opaque object and 'top' unexplained, meaning the agent still lacks guidance on constructing valid request bodies or pagination controls. This is partial compensation.
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 opens with 'Manage Windows Update rings and feature/quality/driver update profiles,' clearly identifying the resource domain. The enumerated action values such as list_update_rings, get_update_ring, create_update_ring, etc., precisely define the supported operations, distinguishing this from sibling management tools like manage_intune_devices or manage_entra_users.
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 action list effectively serves as a usage guide, telling the agent which actions are available (list, get, create, update, delete) across the different profile categories. However, it doesn't explicitly state when to prefer this tool over alternatives or note exclusions, though the resource-specific naming makes the context clear. A brief alternative mention would strengthen this dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_interactive_sign_inB
Start user sign-in flow (device code) and return sign-in instructions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits. It only states that the tool starts the flow and returns instructions, but it fails to mention side effects (e.g., expiration of the code), required prior auth state, or whether the call blocks until completion. This is a significant gap for a tool initiating an authentication flow.
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, front-loaded sentence that immediately conveys the action and output. There is no wasted text, and it is appropriately sized 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?
Although an output schema exists, the description does not provide needed context about the overall sign-in flow. It omits prerequisites (e.g., session authentication), typical usage sequence, or what the instructions look like. Given the tool is part of a multi-step authentication process, the minimal description leaves the agent without enough context to 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 zero parameters, so there is nothing to explain. The description correctly avoids adding parameter details, and the baseline of 4 applies because the tool requires no arguments and the schema coverage is 100%.
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 a specific verb ('Start'), a resource ('user sign-in flow'), and a particular method ('device code'). It also mentions the return value ('sign-in instructions'), which distinguishes it from sibling tools like complete_interactive_sign_in or authenticate_mcp_session.
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 does not provide any guidance on when to use this tool versus alternatives. It does not mention prerequisites, sequencing, or conditions such as 'use this after authenticate_mcp_session' or 'use complete_interactive_sign_in to finish the flow.' The only implied usage is that it starts a sign-in flow, but no explicit context or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_connectionA
Test the connection to Microsoft Graph API and return tenant information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It states the primary behavior (testing connection and returning tenant information) but does not explicitly disclose side effects (none expected), failure behavior, or whether authentication is required. Since the tool is inherently a read-only test, this is acceptable but minimal.
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, front-loaded sentence that directly states the tool's purpose and output. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 params, output schema exists), the description is complete enough. It conveys the purpose and the expected result without needing to explain return formats.
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 input schema reflects this with 100% coverage. The description adds no parameter-specific details, but none are needed. Baseline for 0 params is 4.
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 ('Test the connection'), the resource ('Microsoft Graph API'), and the return value ('return tenant information'). It distinguishes itself from sibling auth/management tools by focusing on connectivity testing rather than authentication or device management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like authenticate_mcp_session or get_auth_status. There is no mention of prerequisites, typical scenarios, or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
34 tool updates
v1.0.0- First observed
authenticate_mcp_session - First observed
complete_interactive_login - First observed
complete_interactive_sign_in - First observed
connect_intune_mcp_server - First observed
discover_graph_operations - First observed
get_auth_status - First observed
get_intune_overview - First observed
manage_admx_policies - First observed
manage_app_config_mam - First observed
manage_app_registrations - First observed
manage_autopilot - First observed
manage_cloud_pc - First observed
manage_compliance_policies - First observed
manage_conditional_access - First observed
manage_configuration_profiles - First observed
manage_device_encryption - First observed
manage_endpoint_security - First observed
manage_entra_devices - First observed
manage_entra_groups - First observed
manage_entra_users - First observed
manage_filters_tags - First observed
manage_identity_protection - First observed
manage_intune_apps - First observed
manage_intune_devices - First observed
manage_intune_enrollment - First observed
manage_intune_rbac - First observed
manage_intune_reports - First observed
manage_intune_scripts - First observed
manage_security_baselines - First observed
manage_settings_catalog - First observed
manage_tenant_admin - First observed
manage_windows_update - First observed
start_interactive_sign_in - First observed
test_connection
TDQS
Scored across 34 tools
Most domain tools (devices, apps, policies, users, groups) are cleanly separated by resource, and action lists disambiguate well. However the auth cluster has genuine overlap: complete_interactive_login is an explicit 'compatibility wrapper' for complete_interactive_sign_in, and authenticate_mcp_session/connect_intune_mcp_server/test_connection blur together. Status/report operations also duplicate each other (e.g. config_profile_status in manage_intune_reports vs get_status in manage_configuration_profiles, and delete_intune spanning both device tools).
All names use consistent snake_case with a predominantly verb_noun pattern (manage_*, get_*, list_*, create_*), and the manage_<domain> convention is applied predictably across the large domain tools. Minor deviations exist (test_connection, discover_graph_operations) but nothing chaotic.
34 tools is heavy by the usual 3-15 guideline, though the domain (full Intune MDM plus Entra ID) is genuinely vast and each manage_* tool consolidates many actions via parameters. The seven-tool authentication cluster in particular feels bloated and could be consolidated, pushing the count above what the task strictly requires.
Coverage is very broad—CRUD, assignment, and status for nearly every Intune and Entra resource, plus lifecycle, reporting, and RBAC surfaces. Some gaps remain: security baselines are read-only (no create/assign), ADMX lacks update, and feature-update/quality/driver update profiles are partially list-only, but agents can work around these.
Maintenance
Related MCP Connectors
Official Microsoft MCP Server to query Microsoft Entra data using natural language
Hosted MCP servers for MSP tools: ConnectWise, NinjaOne, Microsoft 365, SentinelOne, Pax8 and more.
One OAuth connector for your team's remote MCP servers, with Tool Packs, guardrails and logs.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- AlicenseAqualityCmaintenance22 consolidated MCP tools for email, calendar, contacts, folders, rules, categories, and settings with safety controls (dry-run preview, rate limiting, recipient allowlists) and MCP annotations on every tool. Works with personal Outlook.com and work/school Microsoft 365 accounts.22504 npm39MIT
- AlicenseCqualityAmaintenanceA FastMCP server for interacting with Microsoft Entra ID via the Microsoft Graph API, enabling management of users, groups, sign-in logs, MFA, applications, devices, conditional access, and more.48MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server for Microsoft 365 administration using the Microsoft Graph API, enabling user, group, and mailbox management.-
- AlicenseBqualityDmaintenanceMCP server for Microsoft Teams that exposes 73 tools to manage teams, channels, chats, messages, meetings, planner, calendar, apps, tabs, scheduling, search, and authentication via the Graph API.7317 npmMIT