Skip to main content
Glama
WYRE-AI

cipp-mcp

by WYRE-AI

cipp_edit_user

DestructiveIdempotent

⚠ HIGH-IMPACT. Edits an existing user's properties, which can include directory attributes, usage location, and may grant or revoke roles or license eligibility. Reversible by editing again. Confirm with the user before invoking.

Instructions

⚠ HIGH-IMPACT. Edits an existing user's properties, which can include directory attributes, usage location, and may grant or revoke roles or license eligibility. Reversible by editing again. Confirm with the user before invoking. CIPP rebuilds the UPN from the account's current username + domain on every edit, so the current UPN is always resolved first (editing without it would rename the account). That lookup is retried for ~10s when the user is not found yet, because a just-created account can lag in Microsoft Graph.

Input Schema

NameRequiredDescriptionDefault
userIdYesThe user's Azure AD object ID or UPN to identify the account to modify.
jobTitleNoUpdated job title for the user.
licensesNoLicense SKU GUIDs the user should hold after the edit (CIPP reconciles: missing SKUs are added, extra assigned SKUs are removed). Use cipp_list_licenses to discover SKU ids. Mutually exclusive with removeLicenses=true.
departmentNoUpdated department for the user.
displayNameNoUpdated full display name for the user.
tenantFilterYesTenant domain name or ID to scope the operation. Use 'allTenants' to target every managed tenant.
usageLocationNoTwo-letter ISO 3166-1 alpha-2 country code for license assignment eligibility (e.g. 'US'). Required before assigning most Microsoft 365 licences.
removeLicensesNo⚠ When true, strips EVERY license assigned to the user. Mutually exclusive with a non-empty licenses list.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.7.0
  2. Removedv1.5.4
  3. First observedv0.1.0

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (destructiveHint=true, idempotentHint=true), the description discloses high-impact consequences, reversibility by editing again, UPN reconstruction behavior, and a ~10s retry when a newly created account is not yet found in Graph. It also warns that editing without the current UPN would rename the account.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The high-impact warning is front-loaded, and subsequent sentences each add distinct operational value: reversibility, confirmation guidance, UPN reconstruction, and retry behavior. There is no redundant or filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a high-impact mutation with 8 parameters and no output schema, the description covers the critical behavioral risks: high impact, reversibility, confirmation, and UPN/account-rename caution. It does not address tenantFilter scope implications or permission/auth requirements, leaving minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains all 8 parameters including licenses reconciliation and removeLicenses exclusivity. The description adds behavioral context around UPN lookup but does not add substantive per-parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it edits an existing user's properties, and explicitly names the categories that may change (directory attributes, usage location, roles, license eligibility). This clearly distinguishes it from siblings such as cipp_create_user, cipp_disable_user, and cipp_reset_password.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It makes clear this is for modifying an existing user and includes a procedural safeguard: confirm with the user before invoking. It does not explicitly compare against alternatives like create, disable, or offboard, but the context for use is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.