Skip to main content
Glama

remove_user

Destructive

Delete an IAM user from MinIO permanently. Use dry_run to preview guards and capture prior state before removing an account that cannot be restored.

Instructions

[WRITE][risk=high] Delete an IAM user. IRREVERSIBLE — no undo is recorded.

MinIO keeps no recoverable copy of the secret, so the account cannot be restored, only recreated with a secret supplied again. priorState captures the status and policy attachments so the same rights can be rebuilt. Refused when it targets this tool's own credential.

Args: access_key: The user's access key (from iam_users). dry_run: If True, run the guards and report without deleting. target: MinIO target name from config; omit for the default.

Input Schema

NameRequiredDescriptionDefault
targetNo
dry_runNo
access_keyYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.11.0

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, but the description goes well beyond them: it states no undo is recorded, that MinIO keeps no recoverable copy of the secret so the account can only be recreated, that priorState captures status and policy for rebuilding rights, and that self-targeting is refused. That is real behavioral depth an agent cannot get from 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.

Conciseness4/5

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

Front-loaded with the [WRITE][risk=high] tag and the irreversibility warning, and the Args block is justified by 0% schema coverage. There is mild redundancy between 'no undo is recorded' and 'keeps no recoverable copy', which keeps it from a perfect score.

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

Completeness5/5

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

With no output schema, the description helpfully indicates that priorState is returned to rebuild the deleted user's status and policy attachments. Combined with documented parameters, the refusal guard, and the irreversibility notice, an agent has everything needed to call this safely.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden, and it does: access_key is sourced from iam_users, dry_run is explained as running guards plus reporting without deletion, and target is described as the MinIO target name from config with omission meaning the default. All three parameters get meaning the bare schema does not provide.

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 ('Delete an IAM user') and immediately tags it as [WRITE][risk=high], which cleanly separates it from read-side IAM siblings like iam_users and from non-destructive mutations like set_user_status. 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 Guidelines4/5

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

Gives clear operational context: dry_run runs the guards and reports without deleting, and the tool is refused when it targets its own credential, which tells the agent a precondition to check first. It stops short of naming a non-destructive alternative (e.g., set_user_status) for the case where disable, not delete, is wanted, so it is context-rich but has no explicit exclusions.

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