vmware-vdi
Server Quality Checklist
Latest release: v1.0.1
- Disambiguation5/5
Each tool targets a distinct resource-action pair: pools, machines, sessions, entitlements, tasks, images, farms, and app pools are clearly separated. Even similar operations like session_logoff vs session_disconnect have explicit behavioral differences in their descriptions.
Naming Consistency5/5All tool names follow a consistent noun_verb snake_case pattern (e.g., pool_list, machine_reset, entitlement_add, session_logoff). There are no camelCase or mixed verb styles, and the pattern is predictable across the entire set.
Tool Count3/5At 27 tools, the set is heavier than the ideal 3-15 range, but the broad VDI domain (pools, machines, sessions, entitlements, tasks, health, events) justifies most of them. A few could be consolidated (e.g., session_stats and health_summary overlap slightly), but the count is not extreme.
Completeness3/5The toolset thoroughly covers operational management: listing, monitoring, machine/session actions, entitlements, and image pushes. However, it notably lacks create/delete operations for pools, farms, and app pools, which are core provisioning workflows in VDI administration.
Average 4.6/5 across 27 of 27 tools scored. Lowest: 4/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 10 commits in the last 12 weeks
- Last stable release on
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the bar is lower. The description adds the noteworthy 404 behavior on a wrong id, which is valuable beyond the annotation. It does not cover auth or rate limits, but for a simple get, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with a clear [READ] prefix. Every word earns its place, no redundant details, and the 404 clarification is concise and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but with no output schema, the description should clarify what 'full detail' includes and explain the target parameter. It is adequate for basic invocation but leaves gaps for optional parameters and return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does 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 only hints at 'by id' for machine_id, leaving the optional target parameter completely unexplained. There is no detail about formats or how target relates to machine_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'read' and resource 'machine' with scope 'one by id', clearly distinguishing it from siblings like machine_list (list all), machine_reset, and machine_remove. The [READ] prefix reinforces its read-only nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Full detail for one Horizon desktop machine by id' implies the intended use case: when a specific machine_id is known and full details are needed. It does not explicitly name alternatives, but the sibling context makes it evident this is the detail counterpart to machine_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds behavioral context by noting it returns a 404 on a wrong id, which is useful beyond the annotations. This extra error-behavior disclosure makes it more transparent than a bare description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the [READ] marker and immediately states the tool's purpose. Every word contributes value, making it highly efficient with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with annotations, the description covers the core behavior and error case. However, it lacks any explanation of the 'target' parameter and does not specify what 'full detail' includes, which could be ambiguous. Given that there is no output schema to fall back on, the description could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does 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 parameter meaning. It references 'by id' which maps to the required pool_id, but it completely leaves the optional 'target' parameter unexplained. Since the description only partially clarifies one parameter and ignores the other, it falls short of the necessary compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Full detail for one desktop pool by id', which specifies the action (get detail), the resource (desktop pool), and the scope (one by id). It also distinguishes itself from the sibling tool pool_list, which presumably lists pools, by focusing on a single pool's full detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: when you need the full detail of a specific desktop pool identified by id. It doesn't explicitly mention alternatives or exclusions, but the context is clear enough for a simple retrieval tool. Lacking explicit contrast with pool_list prevents a higher score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds the output characteristic 'aggregate numbers, not per-session rows,' contrasting with session_list. It also clarifies the target parameter source, but does not disclose any other behavioral traits (e.g., error handling or data freshness). This is adequate given the strong annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and well-structured. It opens with a clear [READ] tag and a one-line summary, then adds the key distinction from session_list, and finishes with a compact Args section. Every sentence contributes value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema (1 optional param), strong annotations, and no output schema, the description provides sufficient context: it summarizes the output dimensions (state/protocol concurrency, current concurrent, busiest pools) and clarifies it is aggregate data. It could be slightly more detailed about how the output is presented, but overall it is complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining the single parameter: 'target: Horizon target from config.yaml; omit to use the default.' This adds meaning beyond the bare schema (which only lists a name and default), though it could be slightly more explicit about what 'target' represents in the context of session statistics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Session statistics: concurrency by state / protocol, current concurrent, busiest pools.' It uses a specific resource (session statistics) and identifies the scope, distinguishing it from session_list by explicitly noting it provides 'aggregate numbers, not per-session rows.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context by saying it is 'The reporting counterpart to session_list — aggregate numbers, not per-session rows,' which directly tells the agent when to prefer this over the sibling session_list. However, it does not mention other alternatives or exclusions, so it falls 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.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the [READ] prefix and the catalog purpose, but does not disclose return format, pagination, or authorization details. It is consistent with annotations, with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one purpose line and a two-line Args block. Every sentence earns its place, and the [READ] prefix provides immediate orientation. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with two optional params and no output schema, the description covers the essential purpose and parameter behavior. It lacks explicit return structure, but the entity type is clear. Given the annotations cover safety and the tool is simple, this is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description thoroughly compensates by documenting each parameter: base_vm_id for scoping snapshots, and target as the config.yaml horizon target with a default. This adds meaning well beyond the bare schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists instant-clone base VMs and snapshots, with a specific verb and resource. It also distinguishes itself by referencing the golden-image catalog for pool_push_image, setting it apart from sibling list tools like machine_list or pool_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by calling it the catalog for pool_push_image, and explains how to scope via base_vm_id and target. However, it does not explicitly contrast with sibling list tools or mention when not to use it, so it lacks formal exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds contextual behavior: it enumerates the return fields, indicates pagination, and clarifies the target parameter's source ('from config.yaml'). This goes beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It starts with a clear summary tagged with [READ], lists return fields, and then presents a clean Args section. No unnecessary repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with three parameters and no output schema, the description is fairly complete. It covers all parameters and specifies the returned fields. However, it does not detail the pagination mechanism (e.g., offset semantics, page size limits), which would be useful in absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no parameter descriptions (0% coverage), but the description compensates by explaining all three parameters: limit (page size), offset (page offset), and target (Horizon target from config). These explanations add meaningful semantics over the bare schema titles and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'published application pools', and enumerates the returned fields. It distinguishes itself from siblings like pool_list by specifying 'application pools' and the 'published' scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool—when listing published application pools with pagination—and provides context about the target parameter. It does not explicitly discuss alternatives or exclusions, but the specificity of the resource name makes the usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds the 'Paginated envelope' behavior and the verify-pair relationship beyond what readOnlyHint/idempotentHint annotations provide. Does not contradict annotations, though it omits details like error handling or empty-result behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a one-line summary, a usage note, and a minimal args list. There is no redundant material, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the returned fields, pagination envelope, and config target even without an output schema. The exact envelope structure (e.g., total count, next_page token) is left unspecified, but the description is still adequate for a simple list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining each parameter: limit as page size, offset as page offset, and target as a Horizon config reference. This is sufficient for using the tool, though it doesn't add edge-case constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
States 'List Horizon desktop pools' with specific fields and type enumerations (AUTOMATED/MANUAL/RDS), clearly distinguishing it from sibling tools like app_pool_list and farm_list. The '[READ]' prefix reinforces the read-only nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Identifies the tool as 'verify pair for pool_set_enabled and pool_push_image', giving a concrete use case. Does not explicitly exclude alternatives like app_pool_list, but the sibling names and pool-type focus imply when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false) and idempotent (idempotentHint=true). The description adds behavioral details: confirm=False previews, confirm=True grants, and the operation is audited. This goes beyond the structured annotations and informs the agent of the actual execution semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, starting with a one-sentence purpose, followed by a short usage note, then a structured Args list. Every element adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex with 4 params and no output schema. The description covers purpose, parameters, prerequisite lookups, and behavior. However, it doesn't specify the return format or response of preview/confirm actions, leaving a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no descriptions (0% coverage), so the description carries the full burden. It explains each parameter: pool_id from pool_list, ad_user_or_group_ids from ad_user_search, confirm's default and preview behavior, and target defaulting to config.yaml. This provides essential meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Grant desktop-pool access to AD user/group SID(s).' It also differentiates from sibling tools like entitlement_remove and entitlement_list by focusing on the add operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context by instructing to get SIDs from ad_user_search and pool_id from pool_list, and explains the confirm flag for preview versus actual grant. It implies this tool is for adding entitlements, though it doesn't explicitly exclude alternatives; still, the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds value by specifying that results are 'sorted by utilization' and lists the exact output fields (total/available/in-use/error machines and utilization %). It also explains the target parameter uses a config default, which is not in the schema. It does not describe pagination or error cases, but with strong annotations the bar is lower.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: the first line gives the core purpose, the second adds context and a drill-in hint, and the third explains the parameter. Every sentence earns its place, with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema), the description is nearly complete. It lists the output fields and the parameter default, and provides a navigation pointer. It does not describe the exact JSON return structure (e.g., a list vs. single object) or potential errors, but these are minor gaps for a read-only utility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the target parameter, but the description's 'Args' section explicitly explains 'target: Horizon target from config.yaml; omit to use the default.' This fully compensates for the schema gap and adds meaning beyond the input schema's type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with '[READ] Per-pool capacity: total / available / in-use / error machines and utilization %.' which clearly states the verb (READ), resource (per-pool capacity), and the specific metrics returned. It also distinguishes itself from siblings like pool_list or pool_get by focusing on utilization and capacity, and the 'am I running out of desktops?' phrasing adds practical context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case ('am I running out of desktops?') and suggests drilling into machine_list --pool for more detail, which gives a pointer to an alternative. However, it does not explicitly state when not to use this tool or compare it directly with all sibling tools like pool_get, so it is slightly 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.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond annotations: states the operation is informational, does not disrupt sessions, is audited, and needs no confirm gate. This aligns with destructiveHint=false and readOnlyHint=false, and provides valuable operational details without contradicting the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a purpose statement with an example, a rationale sentence, selection logic, and an Args list. Every sentence earns its place, and the format makes scanning easy without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides a complete picture for a messaging tool: purpose, example, safety profile, selection criteria, and parameter meanings. No output schema exists, so no return-value documentation is required. Minor ambiguity remains about whether session_ids and user can be used simultaneously, but overall the description is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full weight. It explains all 5 parameters in a dedicated Args block, adding semantics such as 'substring match' for user, 'INFO, WARNING, or ERROR' for message_type, and 'omit to use default' for target. This fully compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends a message to Horizon session(s), with a concrete example ('save your work, maintenance in 10 min'). This distinguishes it from sibling session tools like session_logoff or session_disconnect, as it is a messaging action rather than a control action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: 'Low blast radius (informational only, no session disruption), so no confirm gate.' This communicates ideal use cases and why no confirmation is needed. However, it does not explicitly name alternative tools or exclusions, so it stops short of a full when-to-use vs. when-not-to-use discussion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, so the bar is lower. The description adds crucial context: 'Work already applied is not rolled back' and 'Audited', plus the preview/cancel confirmation behavior. This exceeds basic annotation coverage without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then delivers behavior and parameter details in a structured, efficient format. Every sentence earns its place; no fluff or redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a cancellation tool with no output schema, the description covers the key operational aspects: preview vs. actual cancellation, non-rollback of applied work, audit trail, and parameter origins. It could benefit from stating what the return value looks like or how success/failure is reported, but it is sufficiently complete for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description's Args section provides meaningful explanations for all four parameters: pool_id as desktop-pool id, task_id sourced from task_status, confirm's preview/cancel behavior, and target's config.yaml origin/default. This fully compensates for the schema's lack of property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with '[WRITE] Cancel a running pool task' with a concrete example ('in-progress image push'). This clearly identifies the verb (cancel), resource (pool task), and scope, distinguishing it from sibling tools like task_status and pool_push_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on how to use cancel (confirm=False previews, confirm=True cancels) and references task_status as the source for task_id, implying when to use it. However, it does not explicitly state when not to use it or name alternative tools for cancellation of other resource types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint=false. The description adds valuable behavioral context: tasks are pool-scoped, and the tool either returns one task status or all tasks depending on task_id presence. It does not contradict annotations and provides useful semantics beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a brief intro, a scoping note, and a formatted Args list. Every sentence adds value, with no redundant filler or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description sufficiently covers invocation modes and pool scoping given the rich annotations and simple parameter set. No output schema exists, so return format is not described, but that is not a major gap for a status query tool. It could mention error cases or return shape, but overall it is complete enough for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage, but the description compensates fully by explaining each parameter: pool_id (desktop-pool id), task_id (specific task id; omit for all), and target (Horizon target from config.yaml; omit for default). It also clarifies the conditional behavior of task_id, which is critical for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads the status of a pool's long task (image push/provisioning) or lists all tasks for the pool. The verb 'Status' and resource 'pool's long task' are precise, and the optional task_id behavior distinguishes it from sibling tools like task_cancel and pool_push_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to provide task_id (from pool_push_image or prior task_status) versus omitting it to list all tasks, and notes that Horizon tasks are pool-scoped. It doesn't explicitly name alternatives or state when not to use the tool, but the read-only purpose and context are clear 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.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable behavioral context: it reveals that the tool returns SIDs, performs substring matching ('Name substring to search for'), and uses a configurable target. This goes beyond what annotations provide, though it lacks details on failure modes or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct and well-structured. The first line immediately states the purpose, and the Args list is compact with no extraneous text. Each sentence earns its place, balancing clarity and brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with 3 parameters and no output schema, the description is remarkably complete. It covers what the tool resolves (SIDs), when to use it (before entitlement_add), and all parameter meanings. The return value is implied by 'resolve to their SIDs', and the absence of pagination or error details is acceptable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, so the description must fully explain the parameters. It does: 'name' is a substring, 'limit' is the maximum number of principals with a default, and 'target' refers to a Horizon config entry. These explanations add semantics that the schema's bare type definitions do not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Resolve AD users/groups by name to their SIDs'. It uses a specific verb ('Resolve') and resource ('AD users/groups'), and distinguishes itself from sibling tools by its focus on AD directory search. The reference to 'entitlement_add' further clarifies its specific role in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by stating it is 'needed to entitle a pool (entitlement_add)', which tells the agent when to use this tool. However, it does not explicitly mention when not to use it or list alternatives, so it falls short of the highest bar for exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a safe read-only, idempotent operation. The description adds useful behavioral context beyond annotations by marking the tool '[READ]', confirming pagination, and explaining the 'target' parameter's source from config.yaml and the default behavior. This is meaningful supplementary information without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a front-loaded [READ] marker, a one-sentence summary of output fields, and a concise args list. Every line provides necessary information with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation without an output schema, the description provides complete context: the resource type, returned attributes, pagination, and optional target selection. Combined with robust annotations (read-only, idempotent, non-destructive), the description fully covers what an agent needs to invoke and interpret this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides only names and defaults, with 0% schema description coverage. The description compensates fully by explaining each parameter: 'limit' as page size (default 50), 'offset' as page offset, and 'target' as an optional Horizon target from config.yaml with an omission default. This adds clear semantic value beyond the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Horizon RDS farms with a specific verb ('List') and resource ('Horizon RDS farms'), enumerating the returned fields (id, name, type, enabled, RDS server count) and the pagination behavior. This differentiates it from sibling list tools like machine_list and pool_list by focusing explicitly on RDS farms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: to retrieve a paginated list of RDS farms, with clear field-level expectations. It does not explicitly mention alternatives, but the resource-specific wording and the 'target' config context provide sufficient guidance without needing exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds useful behavioral context about error handling (teaching error vs traceback) and clarifies that the operation is read-only, exceeding the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and structured with an error note and Args section. Every sentence contributes useful information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-by-id tool with helpful annotations and explicit parameter semantics, the description is mostly complete. It could mention the shape of the returned detail, but 'Full detail' plus the teaching error note covers the essential context for a getter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains session_id as coming from session_list, and target as the Horizon target from config.yaml with a default behavior. This adds meaningful context beyond the raw schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific verb ('get') and resource ('one Horizon session by id') with clear scope ('Full detail'). It is distinctly different from sibling session_list, which is called out explicitly for discovering ids.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: use session_list to discover ids, and warns that a wrong id returns a teaching error rather than a traceback. It also explains the target parameter's default behavior, guiding when to omit it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=true), the description adds meaningful behavioral detail: it mentions the tool is audited and that confirm=False offers a preview dry-run, both of which are valuable to an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-line summary, a short usage note, and a bullet-like Args list. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, params, and behavioral nuance, but it does not mention return values (e.g., whether it returns a task ID or a simple success message) or potential error cases. Given the absence of an output schema, this is a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description carries the full burden of explaining parameters. It describes each parameter with usage context—pool_id from pool_list, ad_user_or_group_ids from entitlement_list, confirm's preview/revoke effect, and target's default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with "[WRITE] Revoke desktop-pool access from AD user/group SID(s)", which is a specific verb+resource statement clearly distinguishing this from sibling tools like entitlement_add. The scope and intent are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description instructs users to get SIDs from entitlement_list and explains that confirm=False previews while confirm=True revokes. This provides clear context but stops short of explicitly naming alternatives or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds value by explaining the aggregated nature ('Aggregates sessions, machines, and pools into a compact status') and presenting it as a high-level overview, which is helpful beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a clear one-line purpose, a usage recommendation, and a brief parameter explanation. Every sentence contributes useful information, and the format is highly scannable with sections for the summary and arguments.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter, no output schema, and read-only semantics, this description is fully adequate. It states what the tool returns (session totals, problem machines, pool availability), when to use it, and how to drill further. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines 'target' as an optional string with default null and no description. The description compensates: 'Horizon target from config.yaml; omit to use the default.' This adds contextual meaning regarding where the value comes from and how to omit it, which is directly useful and covers the single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with '[READ] One-glance Horizon VDI health: session totals by state, problem machines, pool availability.' This specifies a clear verb (health summary) and resource scope (Horizon VDI health), and distinguishes itself from sibling tools like session_list and machine_list by offering an aggregated overview rather than detailed data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states 'The first thing to call for "how is VDI right now?"' and then directs users to 'Drill into problems with machine_list --state or session_list.' This provides both when to use and clear alternatives, fully satisfying the guidance requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds value beyond annotations by disclosing pagination, the 'teaching 404' error on wrong pool IDs, and the target source from config.yaml. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with [READ] and the core purpose. The subsequent lines add only high-value context (pagination, 404 behavior, pool_id source) and a clear Args list. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 4 parameters, no output schema, and the sibling tool ecosystem, the description is sufficiently complete. It covers read-only semantics, pagination, error behavior, parameter meanings, and points to pool_list for correct IDs. Users know what to pass and what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description fully compensates with an Args section. It explains pool_id as 'from pool_list', limit as page size with default 50, offset as page offset, and target as a Horizon target from config.yaml. This adds meaningful context beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with '[READ] List the AD users/groups entitled to a desktop pool', giving a specific verb, resource, and clear meaning ('who can access it'). It also distinguishes from siblings like entitlement_add/entitlement_remove and cross-references pool_list for pool IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool (to see who can access a pool) and provides an important alternative: 'Use pool_list for pool ids.' It also notes pagination and error behavior for wrong pool IDs. It doesn't explicitly discuss exclusions vs. entitlement_add/remove, but gives enough context to be useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description adds valuable behavioral context: pagination behavior, ordering (newest first), the structure of each item, and the target parameter's config-based default. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized, front-loaded with the purpose, then provides item fields, a usage tip, and a structured Args list. Every sentence adds value, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter list tool with no output schema, the description covers all necessary aspects: what it returns, ordering, pagination, filtering, and parameter semantics. It is self-contained and sufficient for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description's Args section fully compensates by explaining each parameter: severity with examples, limit with default, offset as page offset, and target as a Horizon configuration reference. This goes well beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'Horizon audit events', and adds key details: 'newest first', 'optionally filtered by severity', and 'Paginated'. It distinguishes itself from sibling list tools by focusing exclusively on audit events, making it unambiguous for the agent to select.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "Use for 'what went wrong recently'" provides a clear contextual use case. However, it does not explicitly mention when not to use it or name alternative tools, so it stops short of fully explicit guidelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds pagination behavior, return fields, state enum examples, default page size, offset, and target handling. This goes well beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-sentence summary, then a concise field list and an Args block. No redundant filler; each part serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description lists item fields and covers all parameters, defaults, pagination, and use case. It is sufficient for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the Args section explains every parameter: pool filter, state filter with examples, limit default 50, offset, and target source. This fully compensates for the schema's bare types/defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with '[READ] List Horizon desktop machines, filtered by pool id / state. Paginated.' This is a specific verb+resource+scope, and clearly differentiates from siblings like machine_get (single machine) and machine_reset (write operation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It states 'Verify pair for the machine write tools,' giving a clear use case, and describes filters/pagination. It does not explicitly name alternative tools like machine_get for single-machine lookups, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral detail beyond annotations: it discloses the impact on sessions ('drains the machine'), the audit trail ('Audited'), and the preview/apply distinction. Annotations only indicate a write operation, so this enriches the safety and behavior profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary line, a brief explanatory paragraph, and a clear parameter list. Every sentence earns its place, and it is concise without missing critical information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers behavior, parameters, and configuration context (target from config.yaml). Given no output schema, it still provides sufficient information for an agent to invoke the tool correctly. The mention of auditing and previews adds completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description fully explains all four parameters: machine_ids, enabled, confirm, and target, including their meanings, sources, and defaults. This completely compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Enter (enabled=True) or exit (False) maintenance mode for machine(s)' with a specific verb+resource structure. It distinguishes from sibling tools like machine_reset by describing the unique maintenance-mode behavior and its effect of draining the machine.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context that 'Maintenance drains the machine (no new sessions)' and explains the confirm parameter's preview/apply workflow. However, it does not explicitly name alternatives or when-not-to-use conditions, 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.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description adds critical behavior: instant clones will have the backing VM deleted, the confirm parameter controls preview vs. actual removal, and the operation is audited. This substantially exceeds what annotations alone convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-line purpose with a warning, a two-sentence behavior summary, and a tight Args block. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with simple parameters and no output schema, the description covers all essential aspects: the action, the side effect on instant clones, the preview/confirm mechanism, and the source for machine IDs. The mention of 'Audited' also reassures the agent about logging, making this complete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description fully documents all three parameters (machine_ids, confirm, target) with meaningful context: machine_ids come from machine_list, confirm acts as a safety switch, and target controls the Horizon environment. This fully compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with '[WRITE] Remove machine(s) from their pool' – a specific verb and resource that clearly distinguishes it from sibling actions like machine_reset or machine_maintenance. The qualifier about instant clones deleting the backing VM adds precise scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states that confirm=False previews the blast radius and confirm=True removes, providing clear guidance on how to use the tool safely. It does not explicitly compare against alternatives like machine_reset, but the purpose and preview flow make the intended usage evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true, readOnly=false), the description adds crucial details: the irreversible recreation of every desktop, the preview step that reports affected-desktop and in-session-user counts, the confirm=True scheduling behavior, and the audited nature. This fully discloses the destructive implications and procedural safeguards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet dense, leading with the most critical warning and then providing an organized Args list. Every sentence contributes value—no filler or redundant repetition. The structure front-loads the blast radius, then explains the action and parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, multi-parameter tool with no output schema, the description covers all essentials: purpose, effect, preview/confirm flow, parameter semantics, and provenance of inputs. It even anticipates the user's need to see blast radius before committing. The tool is fully comprehensible without needing to guess at behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are absent (0% coverage), but the 'Args' section compensates thoroughly by explaining each parameter's role, defaults, and valid values. For example, logoff_policy is specified as 'WAIT_FOR_LOGOFF (default) or FORCE_LOGOFF,' and confirm is clarified as a preview/schedule switch.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Apply the pending image to an instant-clone pool' with the dramatic outcome 'RECREATES EVERY DESKTOP in it.' This specific verb-object pairing and scope make its purpose unmistakable, distinguishing it from siblings like pool_get or pool_set_enabled.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides strong usage context by labeling it the 'Highest blast radius in the family' and instructing to preview with confirm=False before scheduling. It does not explicitly name alternatives or say when not to use, but the unique nature of the tool and clear workflow guidance suffice for a high score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant context beyond the annotations: the exact effect of disabling, the noop behavior for matching state, the preview/apply mechanism, and auditing. This fully explains side effects and state changes, which is critical for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured. It opens with the core operation in one sentence, adds essential behavioral notes, and ends with a clear parameter list. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the complete behavioral contract: the operation's effect, preview/apply modes, idempotency, auditing, and parameter provenance. An agent has everything needed to invoke this tool correctly and understand its outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description thoroughly explains all four parameters: pool_id with its source, enabled with its boolean meaning, confirm with its preview/apply behavior, and target with its configuration source. This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific operation (enable/disable) and resource (desktop pool), including a key behavioral consequence (disabling stops new sessions). It distinguishes itself from sibling tools like pool_get and pool_list by focusing on state mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides useful context: how to preview vs. apply changes, idempotency, and that pool_id comes from pool_list. However, it does not explicitly name alternative tools or state when not to use this tool, so it falls 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.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior. The description adds a detailed response envelope, item fields, pagination semantics, substring matching for user, exact matching for pool, state value restrictions, and target configuration behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-line summary, followed by a compact return-format paragraph and a structured Args list. Every section adds necessary information for a 6-parameter tool with no output schema; there is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with 6 optional parameters and no output schema, the description exhaustively covers the response envelope, item fields, filtering behavior, pagination, and usage context. Missing details like error/rate-limit handling are non-essential for this read-only listing operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates by explaining each parameter: user is a substring match, pool is an exact desktop-pool/farm id, state lists valid values, limit/offset are pagination controls, and target references config.yaml with default fallback behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'List Horizon VDI sessions, filtered by user / pool id / state. Paginated.', which clearly identifies the verb, resource, and filtering scope. It also positions the tool as 'the verify pair for logoff/disconnect', differentiating it from sibling session mutation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this tool to 'get a session id or confirm a user's sessions here first' before logoff/disconnect. This provides clear context, but it does not explicitly mention when not to use it or name alternatives like session_get.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this as destructive, and the description transparently explains the blast radius preview, the need for confirm=True to apply, the profile write-back side effect, and the audit trail. This goes well beyond the annotation hints, helping the agent understand the full impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is about 120 words and is efficiently structured: a one-line summary, then targeting and confirmation workflow, then parameter details. No filler or redundant repetition of the schema's titles.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, multi-mode tool with no output schema, the description covers safety workflow, parameter semantics, and operational context. The only minor omission is an explicit return-value description, but the preview behavior is already described. Overall, it is a complete description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero descriptions, and the description compensates fully: it explains session_ids come from session_list, user is a substring match that refuses on no match, confirm controls preview vs apply, and target selects the Horizon endpoint from config.yaml. Every parameter is given meaningful context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Force-logoff Horizon session(s)' — a specific verb and resource — and further clarifies it 'kicks the user, triggers profile write-back,' distinguishing it from softer operations like session_disconnect. The targeting modes (by session_ids or user) also make the tool's function unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operational guidance: identify targets by explicit session_ids or by user, and preview with confirm=False before applying with confirm=True. However, it does not explicitly compare itself to session_disconnect or other session tools, so the 'when vs alternatives' exclusion is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by disclosing that the user loses unsaved state, that confirm=False previews the blast radius (machine count and assigned users) without acting, and that the operation is audited. This adds rich context not visible in the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the critical warning, then explains preview/confirm behavior, followed by a compact Args section. Every sentence provides value; there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no output schema, the description covers the purpose, preview mechanism, side effects, and alternative tool. It gives enough context for an agent to safely invoke it, including the audit note and source of machine IDs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero schema description coverage, the description compensates fully: machine_ids are sourced from machine_list, confirm toggles preview vs. actual reset, and target comes from config.yaml with a default. Each parameter's semantics are meaningfully explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Hard-reset desktop machine(s)' with a specific verb and resource. It also differentiates from the sibling tool vmware-aiops for graceful reboots, giving distinct purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly explains when to use this tool (hard reset, losing unsaved state), how to preview with confirm=False, and when not to use it (graceful in-guest reboot should use vmware-aiops). This provides strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description adds key behavioral context: 'state preserved, the user can reconnect', the preview semantics of confirm, and 'Audited'. This enriches the destructiveHint annotation without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the action and main caveat, then uses a clear parameter list. No wasted words — every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description covers purpose, usage, parameters, and safety behavior (preview/confirm). It provides enough context for an agent to invoke the tool correctly and understand the blast radius.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining all four parameters: session_ids and user as alternative selectors, confirm as a preview/apply toggle, and target with a default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with '[WRITE] Disconnect Horizon session(s)' — a specific verb and resource. It also distinguishes itself from the sibling tool session_logoff by stating 'Less disruptive than logoff', clearly defining its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: 'Identify by session_ids OR user' and explains the confirm flag's preview vs. apply behavior. It also contrasts with logoff, giving the agent a clear decision rule between the two tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vmware-skills/VMware-VDI'
If you have feedback or need assistance with the MCP directory API, please join our Discord server