Get user
zammad_get_userOne user (customer or agent) by id: name, e-mail, phone, organization, roles, VIP flag and notes. No credentials. GET /api/v1/users/{id}?expand=true.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Zammad user id. |
zammad_get_userOne user (customer or agent) by id: name, e-mail, phone, organization, roles, VIP flag and notes. No credentials. GET /api/v1/users/{id}?expand=true.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Zammad user id. |
Changes observed during successful MCP inspections.
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description still adds real context beyond that: it tells the agent no credentials are returned (useful for deciding whether the response is safe to surface) and documents the underlying call with expand=true, implying an expanded field set. It does not cover failure behavior such as a missing id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and efficient: the resource and returned fields come first, then the credentials caveat, then the endpoint. The trailing raw endpoint string (GET /api/v1/users/{id}?expand=true) is mild redundancy that an agent rarely needs, but nothing else is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool with no output schema, the description is nearly sufficient: it names the fields returned, the subject types, and a security-relevant exclusion. It is slightly incomplete on error cases (unknown/invalid id) and on whether the id space is shared across customers and agents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema description coverage, the schema already defines user_id as 'Zammad user id.' with positivity bounds. The description only restates that retrieval is 'by id' and adds no format, range, or source hints for obtaining the id, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('One user ... by id') and enumerates the returned fields (name, e-mail, phone, organization, roles, VIP flag, notes), so an agent knows exactly what this retrieves. The 'by id' scope implicitly separates it from zammad_search_users, which handles filtered lookup, and it clarifies that both customers and agents are covered.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'by id' signals this is the lookup to use when the numeric id is already known, in contrast to search_users. There is no explicit when-to-use/when-not statement, no prerequisite (e.g., permissions to read arbitrary users), and no named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.