Skip to main content
Glama

Zammad MCP by usefulapi

Server Details

Search and read Zammad tickets, customers and organizations; add notes, replies and ticket updates.

Ownership verified

The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Uptime
98.8% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A3.9/5.0

Scored across 19 tools

Disambiguation4/5

Most tools have sharply distinct purposes (internal note vs. customer reply, create vs. update ticket, get vs. list article). The only mild overlaps are list_tickets vs. search_tickets and list/search/get for organizations and users, but descriptions clarify boundaries reasonably well.

Naming Consistency5/5

All 19 tools share the zammad_ prefix and snake_case verb_noun structure (zammad_get_ticket, zammad_list_ticket_articles, zammad_create_ticket, zammad_search_tickets). Minor variations like zammad_get_me and zammad_reply_to_ticket are idiomatic and don't break the pattern.

Tool Count4/5

19 tools is slightly above the ideal 3-15 range but justified by the breadth of the Zammad domain (tickets, articles, users, organizations, groups, states, priorities, tags, searches). Each tool covers a distinct resource or operation, with little redundancy.

Completeness3/5

Core ticket lifecycle is well covered (create, get, list, search, update, reply, note, articles), but notable gaps remain: no tools to create or update users or organizations, no tag add/remove (only list), and no article update/delete. These will limit agents that need to onboard customers or manage tags.

Available Tools

19 tools
zammad_add_internal_noteAdd internal noteA
Destructive
Inspect

WRITE: add an INTERNAL note (visible to agents only, never e-mailed to the customer) to ONE ticket. Needs an agent's token (a customer's token is refused, because Zammad would make the note public). The ticket's other data is not changed. POST /api/v1/ticket_articles with type=note, internal=true.

NameRequiredDescriptionDefault
bodyYesNote text (plain text).
subjectNoOptional note subject (one line).
ticket_idYesZammad ticket id.

TDQS

A4.3/5.0
Behavior4/5

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

Adds real context the annotations do not carry: the agent-token requirement (customer tokens are refused and why), the fact that the ticket's other data is untouched, and the exact endpoint/payload shape. One tension: annotations declare destructiveHint=true while the text says existing ticket data is unchanged — a mild mismatch about destructiveness, though both agree this is a write.

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

Conciseness5/5

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

Front-loads 'WRITE' and 'INTERNAL', then auth precondition, then side-effect, then endpoint. Every clause carries information; nothing is padding.

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?

For a 3-parameter write with no output schema and full annotation coverage, the description supplies the auth precondition, the visibility semantics, the non-mutation guarantee and the wire format. Nothing needed to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so ticket_id, body and subject are already documented with types and length bounds. The description only adds the 'ONE ticket' cardinality constraint and the note/public distinction, so baseline 3 is appropriate.

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 ('add an INTERNAL note ... to ONE ticket') with the key qualifier that distinguishes it from a customer reply. An agent can immediately tell this apart from zammad_reply_to_ticket without opening either 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?

The description makes the use case unambiguous: visible to agents only, never e-mailed to the customer, which implicitly routes customer-facing messages to reply_to_ticket. It stops short of naming that sibling explicitly, so the exclusion is inferable rather than spelled out.

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

zammad_create_ticketCreate ticketA
Destructive
Inspect

WRITE: create ONE new ticket for an EXISTING customer (by e-mail address or user id) in a group, with a first article recorded as written by the customer (type note or phone). It does not send an e-mail by itself, but the instance's triggers may (for example an automatic confirmation to the customer). It never creates new users. POST /api/v1/tickets.

NameRequiredDescriptionDefault
bodyYesFirst message of the ticket (plain text).
groupYesGroup name the ticket goes to, e.g. Users or Sales.
stateNoInitial state name (default: new).
titleYesTicket title.
subjectNoSubject of the first article (default: the title).
customerNoE-mail address of an existing customer. Give this or customer_id.
owner_idNoUser id of the agent who should own the ticket.
priorityNoInitial priority name (default: 2 normal).
customer_idNoUser id of an existing customer. Give this or customer.
article_typeNoType of the first article: note (default) or phone.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that no e-mail is sent by the call itself but instance triggers may send one, that new users are never created, and that the article is recorded as customer-authored. These side-effect details are exactly what annotations (destructiveHint=true, openWorldHint=true) cannot convey and are critical for a write tool.

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

Conciseness5/5

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

Three sentences, front-loaded with the operation class ('WRITE') and the core action, then the side-effect caveat, then the negative constraint. Capitalized emphasis on ONE/EXISTING aids scanning without padding; no sentence is redundant.

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

Completeness4/5

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

For a 10-parameter, non-idempotent write tool with no output schema, the description covers prerequisites, trigger behavior, and the endpoint. It omits any mention of what is returned (e.g. the created ticket id), which an agent may need to chain a follow-up call, but that is a minor gap given the otherwise thorough disclosure.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema cannot: the customer field must reference an existing user and the choice between customer (e-mail) and customer_id (id) is a mutually exclusive input, plus the note/phone article semantics. It does not explain defaults for state, priority, or owner, which the schema handles.

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 ('create ONE new ticket') plus scope qualifiers: for an EXISTING customer, in a group, with a first article attributed to the customer. The 'WRITE:' prefix and 'ONE' immediately separate it from sibling read tools (zammad_get_ticket, zammad_list_tickets) and from update/reply 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/5

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

Gives explicit prerequisites and constraints: the customer must already exist ('It never creates new users'), provide either an e-mail or a user id, and the article type is note or phone. It does not explicitly name the alternatives (zammad_reply_to_ticket, zammad_add_internal_note) for adding messages to an existing ticket, so routing guidance is strong but not exhaustive.

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

zammad_get_meGet current userA
Read-only
Inspect

The Zammad user this access token belongs to: id, name, e-mail, roles and groups. Use it to confirm the connection and the token's permissions. GET /api/v1/users/me.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false. The description adds value by listing the returned fields (id, name, e-mail, roles, groups) and framing the call as a token-permission check, though it does not cover rate limits or auth-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/5

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

Two tight sentences plus the raw endpoint. The returned data is front-loaded, followed by the practical use, and the API path is a useful append. No wasted words.

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?

For a no-parameter GET with annotations covering safety and no output schema, the description supplies the resource identity, return fields, and a concrete use case. Nothing essential is missing.

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

Parameters4/5

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

The tool takes zero parameters, so per the rules the baseline is 4. There are no parameters for the description to clarify further.

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

Purpose5/5

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

The description precisely identifies the resource as the user tied to the current access token, listing the returned fields. This inherently distinguishes it from the sibling `zammad_get_user`, which retrieves an arbitrary user by identifier.

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?

Explicitly states when to use it: 'Use it to confirm the connection and the token's permissions.' However, it does not name alternatives or exclusions, so it falls short of a full 5.

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

zammad_get_organizationGet organizationA
Read-only
Inspect

One organization by id: name, domain, notes, VIP flag, member ids. GET /api/v1/organizations/{id}.

NameRequiredDescriptionDefault
organization_idYesZammad organization id.

TDQS

A3.6/5.0
Behavior3/5

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 adds useful context by listing the returned fields and the underlying endpoint, but says nothing about auth requirements or behavior when the id does not exist.

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

Conciseness5/5

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

Two compact fragments with zero filler; the resource identity and return shape are front-loaded before the endpoint detail. Nothing can be cut without losing information.

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

Completeness4/5

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

For a single-entity read with annotations covering safety and no output schema, the field enumeration gives the agent enough to know what comes back. Only the error/not-found path is unaddressed, a minor gap.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter is already documented as 'Zammad organization id.' The description reinforces this with 'by id' but adds no format or constraint detail beyond the schema's integer/minimum bounds. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('One organization by id') and enumerates the returned fields, so the agent knows exactly what it retrieves. It distinguishes itself from the list/search siblings only implicitly via 'by id' rather than naming them, which keeps it short of a 5.

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

Usage Guidelines3/5

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

Usage is implied: fetch a single organization when you already have its id, as opposed to zammad_list_organizations or zammad_search_organizations. There is no explicit when-to-use or when-not-to-use guidance, and the alternatives are never named.

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

zammad_get_ticketGet ticketA
Read-only
Inspect

One ticket by its numeric id (not the ticket number): title, group, state, priority, owner, customer, organization, dates, escalation and article count. GET /api/v1/tickets/{id}?expand=true.

NameRequiredDescriptionDefault
ticket_idYesZammad ticket id (the number in the ticket URL, not the 5-digit ticket number).

TDQS

A4.3/5.0
Behavior4/5

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 adds value beyond that by disclosing the expand=true behavior and the concrete field set returned (escalation, article count, organization), which an agent cannot infer from 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/5

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

A single sentence plus the underlying endpoint, with the identifying constraint front-loaded and zero filler. Every clause earns its place by either disambiguating the id or describing the payload.

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 compensates by enumerating the returned fields, and the single required parameter is fully documented in the schema. Nothing an agent needs to call this correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% and the schema description already explains that ticket_id is the URL number, not the ticket number. The description restates the same distinction, so it adds reinforcement but no new syntactic or semantic detail beyond the schema; baseline 3 applies.

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

Purpose5/5

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

States a specific retrieval ('One ticket') scoped by a specific identifier, and enumerates the returned fields. The 'by its numeric id (not the ticket number)' clause distinguishes it from the list/search siblings that operate on queries or numbers.

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?

Clearly frames the retrieval context (single ticket, numeric id, expanded payload) and preempts the common mistake of passing the 5-digit ticket number. It does not explicitly name an alternative like zammad_search_tickets or zammad_list_tickets for when the id is unknown, so it falls short of full routing guidance.

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

zammad_get_ticket_articleGet ticket articleA
Read-only
Inspect

One article by its id with its full body, headers and attachment names. GET /api/v1/ticket_articles/{id}.

NameRequiredDescriptionDefault
article_idYesZammad article id (from zammad_list_ticket_articles).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false. The description adds valuable return-shape context by specifying that the result includes the full body, headers, and attachment names, which matters because no output schema exists. It does not cover error handling or rate limits, but those are less critical here.

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

Conciseness5/5

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

Two tightly written sentences: the first states the return content, the second gives the endpoint. No filler or redundancy; front-loaded with the core purpose.

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 compensates by detailing the return fields (full body, headers, attachment names). Combined with annotations covering safety and a fully documented single parameter, an agent has everything needed to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100% for the single article_id parameter, including its origin from zammad_list_ticket_articles. The description adds no further parameter syntax or constraints beyond what the schema provides. Baseline 3 applies.

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

Purpose5/5

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

Specifies a concrete verb (GET), a single resource (ticket article), and the scope (one article by id, with full body/headers/attachments). This naturally distinguishes it from the sibling list operation.

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

Usage Guidelines2/5

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

The description states what the tool returns but offers no guidance on when to choose it over alternatives like zammad_list_ticket_articles or zammad_get_ticket. It implies retrieval by id but provides no explicit conditions, exclusions, or workflow context.

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

zammad_get_userGet userA
Read-only
Inspect

One 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.

NameRequiredDescriptionDefault
user_idYesZammad user id.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

zammad_list_groupsList groupsA
Read-only
Inspect

The ticket groups (queues) of the instance, with ids, names and agent ids. Zammad requires the admin.group permission for this list; with an agent-only token it returns an authorization error. GET /api/v1/groups.

NameRequiredDescriptionDefault
pageNoPage number, from 1 (default 1). Pass the previous reply's next_page.
per_pageNoResults per page, 1-100 (default 25).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds value beyond them by disclosing the required admin.group permission and the concrete failure mode with an agent-only token, which the annotations do not 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/5

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

Two dense sentences with zero waste: payload contents first, then permission prerequisite and failure mode. Front-loaded and immediately actionable.

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

Completeness4/5

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

With no output schema, the description compensates by naming the returned fields, and it discloses the auth requirement that determines whether the call succeeds. Pagination behavior is left to the schema, which covers it adequately; only the absence of any routing guidance keeps this from being fully complete.

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

Parameters3/5

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

Schema description coverage is 100% and both pagination parameters are documented inline, including the 'pass the previous reply's next_page' convention. The description contributes no additional parameter meaning, so the baseline 3 applies.

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

Purpose4/5

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

States a specific resource — the ticket groups (queues) of the instance — and even enumerates the returned fields (ids, names, agent ids), so an agent knows exactly what it gets. It is naturally distinct from siblings like zammad_list_organizations or zammad_list_ticket_states, though it never names an alternative to reinforce that distinction.

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

Usage Guidelines3/5

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

Usage is implied by the resource and the disclosed prerequisite (admin.group permission; agent-only tokens fail with an authorization error), which is genuinely useful pre-call guidance. However, there is no explicit when-to-use vs. alternative statement — nothing says, for example, when to reach for groups instead of states or priorities.

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

zammad_list_organizationsList organizationsA
Read-only
Inspect

List customer organizations with domain, VIP flag and member ids. Needs an agent token. GET /api/v1/organizations.

NameRequiredDescriptionDefault
pageNoPage number, from 1 (default 1). Pass the previous reply's next_page.
per_pageNoResults per page, 1-100 (default 25).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/non-destructive, so the safety profile is covered; the description adds genuinely useful context the annotations lack, namely the required agent token and the fields returned. It does not describe rate limits or full return shape, but it adds real value beyond structured data.

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?

Three short, front-loaded sentences with essentially no waste. The trailing 'GET /api/v1/organizations' endpoint line is mildly redundant but still useful for context.

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

Completeness4/5

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

No output schema exists, so the description appropriately names the returned fields, and it adds the auth requirement while the schema handles pagination. For a simple read-only list tool this is nearly complete, missing only explicit sibling routing.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters (page, per_page) are fully documented in the schema including the next_page continuation hint. The description adds nothing about parameters, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('List customer organizations') and even names the returned fields (domain, VIP flag, member ids). It distinguishes itself naturally from the singular zammad_get_organization, but never explicitly differentiates from the sibling zammad_search_organizations, which is the closest alternative.

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

Usage Guidelines3/5

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

Usage is only implied: 'List' suggests enumerating the whole collection versus the search sibling, and 'Needs an agent token' gives an auth precondition, but there is no explicit when-to-use-this-vs-search_organizations guidance or exclusions. Adequate but with a clear gap.

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

zammad_list_ticket_articlesList ticket articlesA
Read-only
Inspect

All articles (messages, internal notes, e-mails, phone notes) of one ticket in order, with sender, type, internal flag, from/to/cc, subject, body and attachment names (attachments are not downloaded). Long bodies are cut at 6000 characters; use zammad_get_ticket_article for the full text. GET /api/v1/ticket_articles/by_ticket/{ticket_id}.

NameRequiredDescriptionDefault
ticket_idYesZammad ticket id.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, yet the description adds genuinely non-inferable behavior: articles are returned in order, attachments are named but NOT downloaded, and bodies are truncated at 6000 characters. The truncation limit is exactly the kind of trait an agent must know before trusting the output.

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

Conciseness5/5

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

A single dense run-on sentence plus the raw endpoint, front-loaded with the resource and scope and immediately followed by the two caveats an agent cares about (truncation, attachment names only). No filler.

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?

No output schema exists, so the description carries the return-value burden and it does so by enumerating returned fields, ordering, and truncation. Combined with the annotations covering the safety profile, nothing needed to call it correctly is missing.

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

Parameters3/5

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

Only one required integer parameter with a 100% covered schema description ('Zammad ticket id.'). The description reinforces that the id scopes to 'one ticket' but adds no format or constraint detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

Specific verb+resource: lists all articles of a single ticket, and enumerates exactly which fields come back (sender, type, internal flag, from/to/cc, subject, body, attachment names). The phrase 'of one ticket' plus the explicit contrast with zammad_get_ticket_article makes it distinguishable from siblings without opening a 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 an explicit routing rule: 'Long bodies are cut at 6000 characters; use zammad_get_ticket_article for the full text.' That tells the agent when to switch tools, though it offers no guidance distinguishing this from zammad_get_ticket or zammad_list_tickets.

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

zammad_list_ticket_prioritiesList ticket prioritiesA
Read-only
Inspect

The ticket priorities of the instance (e.g. '1 low', '2 normal', '3 high') with ids. Use the names in zammad_update_ticket. GET /api/v1/ticket_priorities.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds genuinely new behavioral context that annotations cannot: it is an instance-wide enumeration and it returns both names and ids, which matters because there is no output schema.

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?

Three tight clauses with no filler; the resource and payload shape come first, then the downstream usage, then the endpoint. The endpoint path is arguably redundant for an agent but is a minor addition.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing returns, and it does so by naming the fields (names with ids) and giving examples. For a trivial zero-parameter lookup this is complete, though a line on ordering or whether defaults appear would make it fully airtight.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate, and it does not mislead about inputs.

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

Purpose4/5

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

The description states a specific resource (ticket priorities of the instance) and shows concrete example values ('1 low', '2 normal', '3 high'), so an agent knows exactly what comes back. It does not explicitly contrast itself with the closest sibling (zammad_list_ticket_states), so it falls short of a 5.

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?

'Use the names in zammad_update_ticket' tells the agent precisely why and when to call this tool: to resolve priority labels before mutating a ticket. There is no when-not guidance or discussion of alternatives, but the primary usage context is unambiguous.

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

zammad_list_ticketsList ticketsA
Read-only
Inspect

List the tickets the token's user can see (an agent sees the tickets of their groups; a customer only their own). For anything targeted use zammad_search_tickets. GET /api/v1/tickets?expand=true.

NameRequiredDescriptionDefault
pageNoPage number, from 1 (default 1). Pass the previous reply's next_page.
per_pageNoResults per page, 1-100 (default 25).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds non-obvious behavioral context the annotations cannot convey: results are permission-scoped (agents see only their groups' tickets, customers only their own) and it exposes the expand=true query behavior. It does not describe pagination mechanics or result shape, but the schema covers paging and this is a read-only list.

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

Conciseness5/5

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

Two sentences, zero filler, with the visibility constraint front-loaded and the routing hint placed after the primary behavior. The endpoint reference is a compact extra.

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

Completeness4/5

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

For a read-only, no-output-schema list tool with fully documented inputs, the description covers purpose, scope/authorization, and the sibling alternative. Return format and pagination behavior are left implicit, which is acceptable given the schema documents next_page/per_page paging.

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

Parameters3/5

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

Schema coverage is 100% with only two optional paging parameters, so the schema already carries the parameter documentation; baseline 3 applies. The description's mention of 'expand=true' adds a hint about response expansion not present in the schema, but it is not tied to a described input parameter.

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 (List) plus resource (tickets) and immediately defines the scope: only tickets the token's user can see, with the agent/customer visibility rule spelled out. It also names the sibling zammad_search_tickets as the alternative, so the agent can distinguish the two without opening either schema.

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

Usage Guidelines5/5

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

Explicitly gives the when-to-use split: use this for unfiltered listing, use zammad_search_tickets 'for anything targeted.' That is a clear alternative-routing rule rather than an implied one.

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

zammad_list_ticket_statesList ticket statesA
Read-only
Inspect

The ticket states of the instance (new, open, pending reminder, pending close, closed, ...) with ids and whether they are active. Use the names in zammad_update_ticket. GET /api/v1/ticket_states.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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 usefully adds the shape of the return data (ids plus an active flag) even though no output schema exists, and cites the underlying GET endpoint; it omits pagination or ordering, which is negligible here.

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

Conciseness5/5

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

Two short sentences, front-loaded with the resource, followed by the actionable usage hint and the endpoint. No repetition or filler.

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?

For a trivial no-argument read that returns a small reference list, the description covers what is returned (ids and active flags), the example values, and how to consume the result. Nothing an agent needs in order to call it correctly is missing.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate, and it correctly presents the call as requiring no input beyond the endpoint path.

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

Purpose4/5

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

States the specific resource (ticket states of the instance) and enumerates representative values (new, open, pending reminder, pending close, closed), which is far more informative than the title. It clearly separates itself from zammad_list_ticket_priorities by naming the exact resource, though it doesn't explicitly call out that distinction.

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?

The sentence 'Use the names in zammad_update_ticket' gives explicit downstream context for why an agent would call this, routing toward the write tool. It stops short of stating when-not-to-use or naming alternative lookup tools, but for a zero-parameter enumeration tool 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.

zammad_list_ticket_tagsList ticket tagsA
Read-only
Inspect

The tags on one ticket. GET /api/v1/tags?object=Ticket&o_id={ticket_id}. Needs an agent token.

NameRequiredDescriptionDefault
ticket_idYesZammad ticket id.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, destructiveHint=false, openWorldHint), so the description only needs to add context. It does so usefully by disclosing an auth requirement ('Needs an agent token') and the underlying endpoint, which is exactly the type of operational detail annotations cannot express. It stops short of describing return shape or error behavior.

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?

Three short fragments with the resource front-loaded and no filler. The endpoint string is slightly redundant with the schema but usefully confirms the API object type (Ticket).

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

Completeness4/5

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

For a one-parameter, read-only list with no output schema, the definition covers what it fetches, against which object, and the auth prerequisite. The main omission is what the returned tags look like (e.g. an array of strings), which an agent might want to know.

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

Parameters3/5

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

Schema coverage is 100% with a single well-documented ticket_id, so the schema does the heavy lifting. The description only echoes the parameter in the URL template ('o_id={ticket_id}') without adding format or constraint detail beyond the schema.

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

Purpose4/5

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

The description states the resource precisely ('The tags on one ticket') and pins the exact endpoint, so an agent knows this returns a ticket's tags and not articles, priorities, or states. It lacks an explicit verb, but the noun phrase plus the sibling set makes the scope unambiguous.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no condition selecting it over alternatives, and no mention of caveats such as missing tags or invalid ticket ids. The only implicit routing signal is the endpoint itself, which the agent must infer.

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

zammad_reply_to_ticketReply to ticket (e-mails the customer)A
Destructive
Inspect

WRITE: send a customer-visible reply on ONE ticket. THIS E-MAILS A REAL PERSON: the reply is delivered by e-mail to exactly ONE recipient and cannot be recalled. By default the recipient is the ticket's customer (looked up from the ticket); to may name one other single address. No cc, no bulk, no attachments. Needs an agent's token (a customer's token is refused). For an internal remark use zammad_add_internal_note. GET /api/v1/tickets/{id}, then POST /api/v1/ticket_articles with type=email, internal=false.

NameRequiredDescriptionDefault
toNoOptional: ONE recipient e-mail address. Default: the ticket customer's address.
bodyYesReply text (plain text).
subjectNoOptional subject (one line). Default: 'Re: <ticket title>'.
ticket_idYesZammad ticket id.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark this destructive/openWorld/non-idempotent, but the description adds critical context beyond them: the reply e-mails a real person, cannot be recalled, goes to exactly one recipient, and forbids cc/bulk/attachments. It also discloses the auth requirement, which annotations don't cover.

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

Conciseness5/5

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

Front-loaded with 'WRITE:' and the irreversibility warning, then recipient rules, auth, sibling pointer, and API shape. Every sentence carries decision-relevant information with no filler.

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?

For a destructive one-shot write with no output schema, the description covers the safety profile, recipient semantics, auth requirements, and alternative tool. An agent has everything needed to invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by clarifying that `to` may name only ONE other single address (no cc, no bulk) and that the default is the ticket's customer looked up from the ticket.

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+resource with explicit scope: 'send a customer-visible reply on ONE ticket'. The 'WRITE' prefix and 'customer-visible' qualifier immediately distinguish it from the sibling zammad_add_internal_note.

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

Usage Guidelines5/5

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

Explicitly routes the agent: use this for customer-visible replies, use zammad_add_internal_note for an internal remark. Also states the token prerequisite (agent token, customer token refused). Nothing is left to inference.

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

zammad_search_organizationsSearch organizationsA
Read-only
Inspect

Search customer organizations by name or domain. Needs an agent token. GET /api/v1/organizations/search.

NameRequiredDescriptionDefault
pageNoPage number, from 1 (default 1). Pass the previous reply's next_page.
queryYesSearch text, e.g. an organization name.
per_pageNoResults per page, 1-100 (default 25).

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds one genuinely useful behavioral fact the annotations do not carry — 'Needs an agent token' — but says nothing about pagination limits, result caps, or rate limiting beyond what the schema states.

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

Conciseness5/5

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

Three short sentences, front-loaded with the purpose, then the auth prerequisite, then the endpoint. Nothing is padded and each clause carries distinct information.

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

Completeness4/5

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

For a read-only search with fully documented parameters, the description covers purpose, auth, and endpoint. With no output schema, it could say more about the response shape (e.g. that results are paged with a next_page token), though the page parameter's schema text partly compensates.

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

Parameters3/5

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

Schema description coverage is 100%, so page, per_page and query are already documented (including the next_page pagination hint). The description only marginally extends this by noting domain is searchable, where the schema example mentions just an organization name. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb+resource ('Search customer organizations') plus the searchable fields (name, domain), so it is clearly distinct from get_organization or list_organizations. It stops short of naming those siblings explicitly, so the differentiation is inferred rather than stated.

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

Usage Guidelines3/5

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

The verb 'Search ... by name or domain' implies the lookup use case, and the required 'query' makes the intent reasonably obvious. However, it never says when to prefer this over zammad_list_organizations or zammad_get_organization, and gives no guidance on query construction or empty-result handling.

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

zammad_search_ticketsSearch ticketsA
Read-only
Inspect

Search tickets with Zammad's query syntax. With Elasticsearch on the instance you can use fields, e.g. state.name:open AND group.name:Sales, customer.email:"a@b.com", title:invoice, number:20001; a plain word searches ticket text. Replies carry ids plus names (group, state, priority, owner, customer). GET /api/v1/tickets/search?expand=true.

NameRequiredDescriptionDefault
pageNoPage number, from 1 (default 1). Pass the previous reply's next_page.
queryYesSearch query.
sort_byNoField to sort by, e.g. updated_at or created_at.
order_byNoSort direction (default: relevance).
per_pageNoResults per page, 1-100 (default 25).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuine value with types beyond that: the shape of the reply (ids plus names for group, state, priority, owner, customer) and the underlying expand=true endpoint, which no structured field provides.

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 core purpose and the query syntax, followed by reply shape, with no filler sentences. It is dense but every sentence contributes; the trailing GET endpoint is the only slightly extraneous fragment.

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

Completeness4/5

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

With no output schema, the description compensates by describing the reply contents, and it covers how to compose the query and the Elasticsearch prerequisite. Pagination is only covered by the schema's own parameter descriptions, which is acceptable given their coverage, so nothing critical is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema's terse 'Search query.' by explaining the query language with concrete examples (state.name:open, customer.email, AND, plain-word text search). That meaningfully enriches the most important parameter; page/sort/order parameters remain schema-only.

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

Purpose4/5

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

States a specific verb (search) and resource (tickets) and details the query syntax the tool accepts, so the agent knows exactly what it does. It never names zammad_list_tickets as the alternative, so the distinction from the sibling list tool is left implicit rather than explicit.

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

Usage Guidelines3/5

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

It usefully notes that field-syntax queries require Elasticsearch on the instance, which is real usage guidance. However it never says when to prefer this over zammad_list_tickets or when a plain-word search is preferable, so routing between the two search/list siblings is left to inference.

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

zammad_search_usersSearch usersA
Read-only
Inspect

Search customers and agents by name, e-mail, login, phone or organization. Returns profile fields (no credentials). Needs an agent token. GET /api/v1/users/search?expand=true.

NameRequiredDescriptionDefault
pageNoPage number, from 1 (default 1). Pass the previous reply's next_page.
queryYesSearch text, e.g. an e-mail address or a name.
per_pageNoResults per page, 1-100 (default 25).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover readOnlyHint, openWorldHint and destructiveHint, but the description adds genuinely useful behavioral context beyond them: it discloses the auth requirement ('Needs an agent token') and the return shape ('profile fields (no credentials)'), which is important for a user-listing tool. It stops short of describing rate limits or result caps.

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?

Three short sentences, front-loaded with the purpose and searchable fields before auth and endpoint details. The raw endpoint string (GET /api/v1/users/search?expand=true) is marginally extraneous but still earns its place for debugging, so structure is efficient overall.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and does so at a high level ('profile fields (no credentials)'), plus it flags the auth requirement. Pagination is handled by the schema (next_page reference), leaving only minor gaps like result ordering or exact field list.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (query, page, per_page) are already documented in the schema, including pagination defaults. The description's list of searchable fields loosely echoes the query parameter but adds no syntax or format guidance beyond what the schema provides, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb (search) and resource (users) and enumerates the searchable attributes (name, e-mail, login, phone, organization), so the agent knows exactly what this matches. The resource name distinguishes it from zammad_search_tickets and zammad_search_organizations, though the relationship to zammad_get_user (single lookup vs search) is left implicit.

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

Usage Guidelines3/5

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

The description implies its usage context (find customers/agents by attribute) but never states when to prefer it over zammad_get_user for a known ID or over the organization search. No exclusions or prerequisites for selection are given beyond the implicit 'search vs fetch' distinction.

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

zammad_update_ticketUpdate ticketA
DestructiveIdempotent
Inspect

WRITE: change fields of ONE ticket: state, priority, owner (agent), group and/or title. Use names from zammad_list_ticket_states / zammad_list_ticket_priorities / zammad_list_groups. Pending states need pending_time. Never deletes, removes or merges (those states are refused). The instance's own triggers still run, so closing or reassigning a ticket can send the customer or agent a notification e-mail. PUT /api/v1/tickets/{id}.

NameRequiredDescriptionDefault
groupNoGroup name, e.g. Sales (subgroups as Sales::Europe).
stateNoState name, e.g. open, closed, 'pending reminder'.
titleNoNew ticket title.
owner_idNoUser id of the agent who should own the ticket. Id 1 is Zammad's 'no owner' placeholder.
priorityNoPriority name, e.g. '3 high'.
ticket_idYesZammad ticket id.
pending_timeNoRequired for the pending states: when the ticket reminds or closes, ISO 8601 with a timezone.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that instance triggers still fire and that closing/reassigning can email the customer or agent, plus that delete/remove/merge states are refused. It also clarifies the destructiveHint rather than contradicting it: the only destructive side effects are notification-inducing state changes, not data loss.

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

Conciseness5/5

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

Five tight sentences: the WRITE prefix and field list are front-loaded, followed by value sources, the conditional requirement, the safety boundary, the side-effect warning, and the endpoint. No sentence is filler.

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

Completeness4/5

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

For a 7-param mutation with no output schema, it supplies the mutation boundary, side effects, and value sourcing needed to call it correctly. The remaining gap is operational context such as required permissions/roles and what happens to fields omitted from the call.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3; the description adds genuine cross-parameter meaning the schema cannot, namely that pending_time is conditionally required when state is a pending state, and that owner must be an agent id. Field-level examples (Sales::Europe, 'no owner' id 1) duplicate schema descriptions.

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?

Names the verb (change fields), the exact resource (ONE ticket), and enumerates the mutable fields (state, priority, owner, group, title). The 'ONE ticket' scope plus 'Never deletes, removes or merges' cleanly separates it from zammad_create_ticket and zammad_reply_to_ticket 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?

Explicitly routes the agent to zammad_list_ticket_states / zammad_list_ticket_priorities / zammad_list_groups to obtain valid names, and states the pending_time prerequisite for pending states. It stops short of naming a sibling to use instead (e.g. for bulk changes or article replies), so it is strong context without explicit exclusions.

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to manage Zammad tickets, users, organizations, and attachments through the Zammad API.
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server to interact with Zammad ticketing system, enabling ticket search, creation, update, article addition, and user/organization/group queries via the Zammad API.
    4 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables reading and writing Zendesk tickets, including searching, fetching comments, posting replies and internal notes, setting ticket status, assigning tickets, logging time, and formatting tickets as Markdown issue drafts for handoff to GitLab, GitHub, or Jira.
    29
    239 PyPI
    7
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    Enables MCP clients to interact with Zammad tickets, articles, search and replies under each caller's own permissions, using either a static token or SSO/OIDC per-user mode.
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.