Skip to main content
Glama
vmware-skills

vmware-vdi

remove_entitlement

DestructiveIdempotent

Revoke desktop-pool access from specified AD user or group SIDs, with optional preview of affected principals before confirmation.

Instructions

[WRITE] Revoke desktop-pool access from AD user/group SID(s).

Get SIDs from list_entitlements. A bare call returns blast_radius (pool identity, which principals lose access and which were not entitled) and revokes nothing; confirm=True revokes. Refused when the pool's current entitlements cannot be read. Show blast_radius to the user and wait for their decision. Do not set confirm=True on your own because the user asked for this earlier: they have not seen the blast radius yet. Audited.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
targetNoHorizon target from config.yaml; omit to use the default.
confirmNoFalse (default) returns the blast radius and changes nothing. True revokes.
pool_idYesThe desktop-pool id (from list_desktop_pools).
ad_user_or_group_idsYesAD SIDs to remove (from list_entitlements).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.4.1

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=true, but the description adds the critical two-phase semantics: a bare call computes blast_radius and revokes nothing while confirm=True performs the revocation, plus the pre-condition failure mode and the auditing behavior. It also names the blast-radius contents (pool identity, principals losing access, principals not entitled), which no annotation conveys.

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

Conciseness4/5

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

Front-loaded with the operation class and core action, then layered with sourcing, dry-run semantics, and the human-confirmation guardrail; every sentence carries operational weight. Some redundancy with the schema (SID sourcing, confirm semantics) slightly dilutes it.

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

Completeness5/5

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

Although there is no output schema, the description compensates by describing the blast_radius payload and the no-op default, and it covers safety gating and failure conditions for a destructive tool. An agent has everything needed to call it correctly and safely.

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% and the schema already documents confirm's two-phase behavior and the SID/pool_id sources, so the description largely restates structured data. It adds only marginal param-level meaning, such as the blast-radius field contents, which is return information rather than parameter guidance. Baseline 3 applies.

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?

States a specific verb and resource ('Revoke desktop-pool access from AD user/group SID(s)') and prefixes the [WRITE] class, which immediately separates it from the read-side siblings list_entitlements and add_entitlement. An agent can identify the operation without opening the schema.

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

Usage Guidelines5/5

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

Explicitly says where to get inputs (list_entitlements for SIDs, list_desktop_pools for pool_id), describes the dry-run-first workflow, states the refusal condition ('Refused when the pool's current entitlements cannot be read'), and instructs the agent not to self-confirm without showing the user the blast radius. This is a full when/when-not protocol.

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