Skip to main content
Glama
fruggr

Zendesk MCP Server by Fruggr

by fruggr

Zendesk MCP Server

Glama score MCP Registry npm version License: MIT Node.js

A Model Context Protocol (MCP) server that puts Zendesk inside your AI assistant. It finds answers in the Help Center; drafts, updates and translates articles while keeping the languages in sync; and handles Support tickets end to end, comments, triage and image attachments included. It all happens in plain language, without switching apps.

It does roughly what the Zendesk agent for Microsoft 365 Copilot does, minus the tie to one vendor: it drops into any MCP client (Claude Desktop, Claude Code, Cursor, VS Code, and the rest). And it always acts with each user's own Zendesk permissions, never a shared admin key.

What your assistant can do

Ask in natural language; the assistant works out the context and the intent, then calls the right tools on your behalf.

  • Find answers in the Help Center. "How do I request a software license?" or "what's the time-off policy?" surfaces the right article, matched by meaning rather than by keyword.

  • Create, view and update tickets without leaving the conversation: open a ticket, check its status, add a public reply or an internal note, change the priority or the assignee, mark it solved.

  • Summarize a ticket for a report or a quick decision. The assistant pulls the details and the full comment thread and gives you the gist in a sentence.

  • Read the screenshots and photos attached to a ticket. Error dialogs, UI captures and product photos are handed to your assistant's own model as images, so it can describe them or act on what they show.

  • Search and triage your queue in plain language: "show me my open tickets about billing from this week."

  • Draft and maintain knowledge-base articles. You can write a new one, or revise a large one a single section at a time, so the whole HTML body never has to round-trip through the model.

Related MCP server: Zendesk MCP Server

Why this server

Most Zendesk integrations run on a shared admin API key, which hands every user full access to every ticket, and bolt on a fixed set of tools. This one is built differently.

  • Per-user authentication, OAuth only. Both transports use OAuth 2.1 PKCE: each user signs in with their own Zendesk credentials, so the assistant sees and touches exactly what that person is allowed to, the same scoping you get by signing into Zendesk directly. Static API tokens are deliberately not supported (why).

  • Section-based article editing. For large Help Center articles, read and rewrite one section at a time (parsed by h1/h2/h3 headings) instead of shuffling the full HTML body through the assistant. On a targeted edit that cuts tokens by a factor of 10 to 100.

  • Native multimodal attachments. Ticket images come back as native MCP image content, so the client's own model (Claude, GPT, Gemini, whichever) sees the pixels directly. No server-side vision model, no extra API key, and nothing tying you to one provider. Non-image attachments come back as text references, and both image caps are configurable.

  • A tool surface you can cap. Expose every operation as its own tool, group them into namespace proxies, or collapse everything into a single unified tool. You can also filter by namespace or down to read-only operations, so each context loads only the surface it needs (see Tool surface).

  • Two deployment shapes, same auth story. Run it on your laptop as a stdio MCP server, or deploy it as a private remote MCP server reached over HTTP, with one Zendesk session per request and each client carrying its own user's token.

  • A lean stack: the official @modelcontextprotocol/sdk plus zod, speaking to the Zendesk Support and Help Center (Guide) APIs.

Look elsewhere when:

  • You need Zendesk products outside Support and Guide (Talk, Explore analytics, Sell). Those endpoints aren't covered.

  • You need a single shared service account, or static API-token auth. This server supports neither, by design (see below).

What this server does not do

There is no API-token authentication. The server speaks OAuth 2.1 PKCE and nothing else: no ZENDESK_EMAIL + ZENDESK_API_TOKEN (Basic auth) mode, in any transport. That is deliberate, for two reasons.

  1. API tokens are insufficiently secure. A Zendesk API token is a long-lived, static, shared secret that carries the full rights of the user who issued it. There is no per-user scoping, no short expiry, and no per-user consent or revocation. OAuth 2.1 PKCE issues per-user, revocable tokens instead.

  2. API tokens don't scale. A single static credential can't attribute actions to individual users, and it can't be revoked granularly. It also makes a multi-user remote deployment unsafe: over HTTP it would expose the issuing user's rights to every caller.

If you specifically need an API-token or service-account mode (headless CI with a shared account, say), use one of the other Zendesk MCP servers that support it. A few are listed under Inspiration & related projects.

Quick start: local (stdio)

The default shape: one developer, one Zendesk account, OAuth 2.1 PKCE in the browser. You need Node.js >= 20 and a Zendesk instance (Support or Suite).

Install

# Run without installing
npx -y @fruggr/zendesk-mcp-server <your-subdomain>

# Or install globally
npm install -g @fruggr/zendesk-mcp-server
zendesk-mcp-server <your-subdomain>

Signing in needs a Zendesk OAuth client, so register one first (next section).

Zendesk OAuth setup

  1. Go to Admin Center → Apps and integrations → APIs → OAuth Clients

  2. Create a public client:

    • Identifier: <your-subdomain>_zendesk (or set ZENDESK_OAUTH_CLIENT_ID)

    • Redirect URL: http://localhost:27439/callback (change the port to match ZENDESK_OAUTH_CALLBACK_PORT / --callback-port if you override it; Zendesk accepts several redirect URLs, one per line)

On the first tool call the server starts the sign-in flow: it opens a browser window and returns the authorize URL in a tool message. The call does not block waiting for sign-in, so authenticate in the browser and then retry the request. The token is persisted to an owner-only file and reused across restarts, so you don't authenticate again every time your MCP client respawns the server (path and overrides: ZENDESK_TOKEN_FILE).

MCP client wiring

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "zendesk": {
      "command": "npx",
      "args": ["-y", "@fruggr/zendesk-mcp-server", "<your-subdomain>", "--mode", "single"]
    }
  }
}
claude mcp add zendesk -- npx -y @fruggr/zendesk-mcp-server <your-subdomain> --mode single

Add to your .vscode/mcp.json:

{
  "servers": {
    "zendesk": {
      "command": "npx",
      "args": ["-y", "@fruggr/zendesk-mcp-server", "<your-subdomain>", "--mode", "single"]
    }
  }
}

Something not working? See Troubleshooting.

Quick start: remote (HTTP)

Experimental. The HTTP transport ships, but it has not yet been exercised end-to-end against a real Zendesk tenant from every MCP client. Local stdio is the supported path.

You can also deploy a private remote MCP server for one Zendesk account, where every MCP client presents its own user's OAuth bearer in Authorization: and the server never sees a shared admin key. The full guide covers OAuth setup, --public-url behind a reverse proxy, per-platform config, the discovery endpoints, MCP client wiring, CORS and what stays the operator's job: docs/http-deployment.md.

Tool surface

Tools are grouped into four namespaces: Tickets, Help Center, Users & Organizations and Search. The server registers them in one of three modes, so you can trade granularity against context budget:

  • all: every operation as its own tool, for clients with good tool selection;

  • namespace (default): one proxy tool per namespace, a balanced middle ground;

  • single: a single zendesk tool, for models with limited tool slots.

Proxies take { "operation": "<tool_name>", "params": { … } } and validate params through the original schema. --namespace, --tool and --read-only filter tools before the proxies are built, so each proxy describes only the operations that survive.

Every tool with its description and its read/write mode: docs/mcp-tools-reference.md. The flags and worked examples: docs/configuration.md.

Help Center context

Beyond tools, the server hands the LLM the structure of your Help Center: the active locales, the category → section tree with IDs, the visibility segments and the permission groups. With those in hand it uses real IDs instead of guessing or fuzzy-matching names. It all arrives through MCP-native channels, namely the instructions blob sent on initialize plus pull-only resources for the topology and for reading (or pinning) individual articles. The resources are fetched with the caller's own token, and clients that don't support resources ignore them silently.

What's exposed, what the promoted-article pre-listing costs in requests, and how to turn each piece off: docs/help-center-context.md.

Configuration

The complete reference for the CLI flags (--mode, --namespace, --read-only, --transport, --public-url, and so on) and the environment variables (ZENDESK_SUBDOMAIN, ZENDESK_TOKEN_FILE, PUBLIC_URL, the attachment-vision caps) lives in docs/configuration.md. Every variable has its own anchor, so you can deep-link a specific setting.

Troubleshooting

Browser not opening during OAuth login, the callback port already in use, having to re-authenticate every time, and Permission denied on the Guide-admin endpoints are covered in docs/troubleshooting.md. Restart with LOG_LEVEL=debug for the full OAuth flow trace.

Development

Setting up the repo, the toolchain, dev mode and how to test a PR branch are covered in CONTRIBUTING.md. Architecture and code-style conventions live in AGENTS.md.

FAQ

Which Zendesk products are supported? Zendesk Support (tickets, users, organizations) and the Help Center / Guide (articles, sections, categories, translations, labels, content tags, segments, attachments). Talk, Explore and Sell are out of scope.

Do I need a Zendesk admin API key? No, and the server doesn't support one. Each user authenticates with their own credentials and the server acts with exactly their permissions (why).

Is it safe to run via npx? Releases are published from CI via npm Trusted Publishing (OIDC), so each version carries a build provenance attestation you can verify on its npm page. No secrets are ever logged by the server.

Contributing

Pull requests are welcome, AI-assisted ones included, as long as the human author has read and validated every line. The guide, the author checklist and the review workflow are in CONTRIBUTING.md.

Versions follow SemVer and are released automatically from Conventional Commits; the history is in CHANGELOG.md.

This project was built with reference to:

License

MIT


Built and maintained by Digital4better for the Fruggr project.

Available Tools

53 tools
add_private_noteAdd Private NoteA

Add an internal note (not visible to requester) to a ticket, optionally with file attachments (uploaded via the Zendesk Uploads API and carried on the note). The note is appended to the ticket thread; use add_public_comment instead when the reply should be visible to the requester.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesNote text (internal, agent-only). Plain text or HTML; not shown to the requester.
ticket_idYesTicket ID — the numeric id of the ticket to annotate. Obtain it from search_tickets or list_tickets.
attachmentsNoFiles to attach to this note (base64-encoded content).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate non-readonly, non-destructive, non-idempotent. The description adds behavioral context: note is appended to the ticket thread, and file attachments are uploaded via the Zendesk Uploads API. 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/5

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

Two sentences with front-loaded purpose and 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.

Completeness4/5

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

For a 3-param tool with no output schema, the description covers the main action, distinguishes from sibling, and mentions attachment mechanism. Could mention return value behavior, but it's not required.

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 already describes parameters in detail. The description adds minimal extra meaning beyond restating 'internal note' and 'optionally with file attachments', which is baseline.

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 clearly states the verb 'Add' and resource 'internal note to a ticket', and explicitly distinguishes from sibling 'add_public_comment' by specifying visibility to requester.

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?

The description provides explicit guidance on when to use this tool vs the alternative 'add_public_comment', stating 'use add_public_comment instead when the reply should be visible to the requester'.

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

add_public_commentAdd Public CommentA

Add a public comment (visible to requester) to a ticket, optionally with file attachments (uploaded via the Zendesk Uploads API and carried on the comment). The comment is appended to the ticket thread and emails the requester; use add_private_note instead for an internal, agent-only note.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesComment text sent to the requester. Plain text or HTML; visible in the ticket.
ticket_idYesTicket ID — the numeric id of the ticket to reply on. Obtain it from search_tickets or list_tickets.
attachmentsNoFiles to attach to this comment (base64-encoded content).

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already indicate non-readOnly (write) and non-destructive. The description adds that the comment is appended to the ticket thread and emails the requester, which are key behavioral details 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/5

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

The description is concise, with only two sentences. The first sentence states the primary action and optional attachments; the second covers behavioral effects and the alternative tool. No wasted words.

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?

The description covers the main behaviors (comment creation, emailing, attachments) and distinguishes from the sibling. It does not mention permissions or rate limits, but given the tool's simplicity and the presence of annotations, it is sufficiently complete.

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 description coverage is 100%, so the baseline is 3. The description adds value by explaining the attachment mechanism ('uploaded via the Zendesk Uploads API and carried on the comment') and confirming that body text is sent to the requester and supports HTML.

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 clearly states the tool adds a public comment to a ticket, specifies it is visible to the requester, and optionally includes file attachments. It directly distinguishes itself from the sibling tool 'add_private_note' by contrasting public vs. internal notes.

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?

The description explicitly tells the agent when to use this tool (adding a public comment) and when not to (use 'add_private_note' for internal notes). It also explains that attachments are handled via the Zendesk Uploads API, providing implementation guidance.

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

archive_articleArchive Help Center ArticleA
DestructiveIdempotent

Archive (soft-delete) a Help Center article: it is removed from the Help Center but can be restored from the Guide admin UI. Returns a confirmation message; the article and all its translations become invisible to end users. This is the only removal the Zendesk API offers — permanent deletion is not available via the API (do it from the Guide admin UI). To only hide an article temporarily while keeping it in the knowledge base, use update_article with draft: true (unpublish) instead. Guarded by a required confirm flag.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesExplicit safety guard: must be set to true to archive the article. Any other value refuses the operation without calling Zendesk.
article_idYesArticle ID — the numeric id of the Help Center article. Obtain it from list_articles or search_articles.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations provide destructiveHint=true and idempotentHint=true. The description adds important context: soft-delete behavior, reversibility from admin UI, invisibility to end users, and return of confirmation message. It does not contradict annotations and provides value beyond them.

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?

The description is concise with three well-structured sentences. It front-loads the main purpose, then provides details on behavior, alternatives, and prerequisites without superfluous content.

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?

Given the rich input schema (2 params with 100% description coverage) and annotations, the description covers all necessary aspects: purpose, behavior, return type, alternative, and safety. No gaps are evident.

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%, but the description adds meaning by explaining 'confirm' as an explicit safety guard and 'article_id' as a numeric ID obtainable from list_articles or search_articles, which aids the agent in parameter selection.

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 clearly states 'Archive (soft-delete) a Help Center article' and distinguishes between soft-delete and permanent deletion, as well as from unpublishing via update_article. It specifies the verb (archive) and the resource (Help Center article) with detailed behavior.

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?

The description explicitly states when to use this tool (the only removal API offers) and when not to use it (for temporary hiding, use update_article). It provides an alternative and explains the required confirm flag as a safety guard.

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

compare_translationsCompare Article TranslationsA
Read-onlyIdempotent

Compare two locales of the same article to decide whether the target translation needs work, reporting independent signals instead of one ambiguous verdict. (1) Header — a "Freshness" verdict for the target, derived from the two translations' updated_at timestamps: if the source was edited after the target it is "likely behind, review recommended" (with the day gap), otherwise "up to date". This is the primary staleness signal and is always available. (2) Zendesk's own per-translation "outdated" flag for the target ("yes"/"no"/"unknown"), shown as a secondary overlay: it is only set through Guide's native "mark out of date" workflow and NOT by API edits, so a "no" does not by itself mean current — prefer Freshness. (3) A global structure check (section count and heading-tag sequence); on mismatch the header warns the per-index rows may be misaligned. (4) A per-section table matched by index, status "ok" (present in both), "missing" (present in source, absent in target) or "extra" (present in target, absent in source). (5) Per-section source/target word counts, INFORMATIONAL ONLY: a length difference between languages is normal and is deliberately NOT flagged as a divergence — do not read a word-count gap as an edit regression or staleness. Read-only; performs three Help Center GET calls (both translations plus the translations list for the outdated flag).

ParametersJSON Schema
NameRequiredDescriptionDefault
article_idYesArticle ID — the numeric id of the Help Center article. Obtain it from list_articles or search_articles.
source_localeYesReference locale to diff against, e.g. "en-us". Usually the article source_locale (from get_article).
target_localeYesTarget locale to compare against source

TDQS

A4.3/5.0
Behavior5/5

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

Annotations indicate read-only, open world, idempotent, non-destructive. Description confirms read-only nature, specifies three GET calls, and explains limitations (e.g., outdated flag set via native workflow, not API edits). 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.

Conciseness3/5

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

Lengthy but well-structured with numbered sections. However, some details (e.g., 'per-index rows may be misaligned') could be simplified without losing clarity. Still, it is organized and readable.

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, but description fully details all return signals: freshness verdict, outdated flag, structure check, per-section table, word counts. Also clarifies that word-count gaps are informational and not divergence indicators.

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 covers 100% of parameters with descriptions. The tool description adds minimal new info beyond the schema, e.g., 'obtain from list_articles or search_articles'. 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?

Clearly states the tool compares two locales to decide if target translation needs work, listing five distinct signals. It distinguishes from sibling tools like get_article or list_articles by focusing on comparison and staleness detection.

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 describes when to use (compare translations for staleness) and notes it is read-only with three GET calls. Does not explicitly state when not to use or compare to alternatives, but the unique purpose makes this less critical.

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

create_articleCreate Help Center ArticleA

Create a new article in a section and return the created article with its id. The locale becomes the article's source_locale. Requires a permission_group_id (use list_permission_groups to find available IDs). To add content in other locales afterwards, use create_article_translation.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesArticle body as HTML (this becomes the source-locale content).
draftNoWhen true (default), the article is created unpublished; set false to publish immediately.
titleYesTitle of the new article, in its source locale.
localeNoSource locale for the article, e.g. "en-us" or "fr". Defaults to the Help Center's default locale; becomes the article's source_locale.
promotedNoWhen true, marks the article as promoted (featured) in its section. Defaults to false.
author_idNoAuthor user ID. Defaults to the authenticated user.
section_idYesSection that will contain the article (numeric id from list_sections).
label_namesNoLabel names for search ranking (use list_labels to see existing labels)
content_tag_idsNoContent tag IDs (use list_content_tags to find them)
user_segment_idNoUser segment ID for visibility (use list_user_segments to find it; if that is forbidden because the token is not a Guide admin, reuse the user_segment_id of an existing article from get_article). Defaults to everyone.
permission_group_idYesPermission group ID (use list_permission_groups to find it; if that is forbidden because the token is not a Guide admin, reuse the permission_group_id of an existing article from get_article).

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate the tool is a mutation (readOnlyHint=false) and not destructive. The description adds that the locale becomes the source_locale, but this is also in the schema. No additional behavioral traits (e.g., side effects, rate limits) are disclosed beyond what annotations and schema 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/5

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

Two sentences with front-loaded purpose: 'Create a new article in a section and return the created article with its id.' Every sentence serves a purpose without redundancy.

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

Completeness3/5

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

With 11 parameters and no output schema, the description is minimal. It covers the return value ('with its id') and the key required parameter, but doesn't explain optional parameters like draft, promoted, etc. However, schema covers all parameters, so the description is adequate but not rich.

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 baseline is 3. The description only mentions 'permission_group_id' and 'locale' as source_locale, which repeats schema info. No new meaning is added beyond what the input schema already provides.

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 clearly states 'Create a new article in a section and return the created article with its id.' It specifies the verb (create) and resource (article), and distinguishes from sibling 'create_article_translation' by noting that for other locales, that sibling should be used.

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 provides explicit guidance on the required 'permission_group_id' and how to find it using 'list_permission_groups'. It also directs to 'create_article_translation' for adding content in other locales, giving clear context on when to use this tool versus alternatives.

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

create_article_attachmentCreate Article AttachmentA

Upload a file to a Help Center article and return the created attachment (its id, file name, content type, size and content URL). Not idempotent: calling it again uploads another copy rather than replacing the previous one. This is for article assets — for files on support tickets use get_ticket_attachments, and to see an article's existing attachments use list_article_attachments.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_nameYesName to store the file under, including its extension (e.g. "screenshot.png"); used as the download name.
article_idYesArticle ID — the numeric id of the Help Center article. Obtain it from list_articles or search_articles.
file_base64YesThe file's raw bytes as a base64-encoded string; the server decodes them before upload.
content_typeNoMIME type of the file, e.g. "image/png" or "application/pdf". Defaults to application/octet-stream when omitted.application/octet-stream

TDQS

A4.4/5.0
Behavior4/5

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

Description discloses non-idempotency, which is critical beyond annotations. Annotations only show idempotentHint=false, but description explains the behavior (each call uploads another copy). Also mentions return value contents.

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 with no wasted words. First sentence states purpose and returns, second explains non-idempotency, third provides sibling differentiation.

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?

Given no output schema, description adequately covers return values. It could mention potential size limits or authorization, but overall complete for a create attachment tool.

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%, so schema already describes parameters well. Description adds no additional parameter details beyond the return value fields. 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?

Description explicitly states 'Upload a file to a Help Center article and return the created attachment', with specific verb and resource. It also distinguishes from sibling tools by naming get_ticket_attachments and list_article_attachments.

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?

Clear guidance on when to use this tool (for article assets) and when not (for support tickets, use get_ticket_attachments; to view existing attachments, use list_article_attachments).

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

create_article_translationCreate Article TranslationA

Create a translation for an existing article in a specific locale. The article must already exist (create it with create_article); this adds a new localized version and returns the created translation (locale, title, draft state). The target locale must not already have a translation — use update_article_translation to modify an existing one, and list_article_translations to see which locales exist. Provide the full HTML body.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTranslated body (HTML)
draftNoCreate the translation as a draft (not visible to end users). Defaults to false (published).
titleYesTranslated article title.
localeYesTarget locale (e.g., "fr", "de")
article_idYesID of the existing article to translate.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already indicate non-read-only and non-destructive. Description adds the return value (locale, title, draft state) but not more behavioral details like permissions or side effects.

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 concise sentences: purpose, constraints, and output. No redundancy, front-loaded.

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; description explains return fields. Preconditions and alternatives are covered. Could add example of locale format, but sufficient given complexity.

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 baseline is 3. Description adds context: 'target locale must not already have a translation' and 'Provide the full HTML body', adding meaning beyond schema.

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 clearly states the action ('Create a translation'), resource ('for an existing article'), and constraints ('in a specific locale'). It distinguishes from siblings by naming create_article, update_article_translation, and list_article_translations.

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 states when to use (existing article, new locale), when not to (locale already has translation), and alternatives (use update_article_translation to modify, list_article_translations to check).

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

create_content_tagCreate Content TagA

Create a new content tag for Guide articles. Content tags are end-user visible labels that help readers discover related articles; this returns the created tag with its id. Check list_content_tags first (filter by name_prefix) to avoid duplicates, then attach the new id via the content_tag_ids parameter of create_article or update_article. For internal search-ranking labels that are not shown to end users, use article labels (list_labels) instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesContent tag name as shown to end users (e.g., "billing", "getting-started").

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already present; description adds that it returns the created tag with its id and implies mutation. Does not contradict annotations. Additional context about duplicate avoidance improves transparency.

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 plus one extra: first states purpose/return, second gives usage guidance, third provides alternative. No redundancy, front-loaded, every sentence adds value.

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 simple one-parameter create tool with no output schema, the description covers purpose, return value, pre-use check, post-use attachment, and alternative. Complete given complexity.

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 has 100% coverage for parameter 'name' with a clear description. Description adds context about using name_prefix for duplicate checking but does not provide new parameter semantics beyond schema. 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?

Description clearly states 'Create a new content tag for Guide articles.' with specific verb and resource. It distinguishes from sibling tools by noting content tags are end-user visible labels, and contrasts with internal labels via list_labels. Also mentions return value includes the id.

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 advises to check list_content_tags first to avoid duplicates, then attach via create_article/update_article. Also specifies alternative: for internal search-ranking labels use list_labels. Clear when to use and when not.

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

create_ticketCreate Zendesk TicketA

Create a new Zendesk support ticket with subject, description, and optional priority/type/assignee/tags. The description becomes the first public comment of the ticket, and the new ticket id is returned. After creation, use update_ticket to change status or assignee, add_public_comment or add_private_note to reply, and manage_tags to adjust tags. Look up valid assignee_id / group_id and custom field ids via search_users or your Zendesk admin settings. Discover custom field ids and their accepted option values with list_ticket_fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags to set on the new ticket. Each tag is a single lowercase token (join multi-word tags with an underscore). Use manage_tags later to add or remove individual tags.
typeNoTicket type. One of problem, incident, question, task.
subjectYesTicket subject — the short summary line shown in ticket lists and search results.
group_idNoId of the group to assign the ticket to.
priorityNoTicket priority. One of urgent, high, normal, low.
assignee_idNoUser id of the agent to assign the ticket to.
descriptionYesTicket description — the body of the request. It becomes the ticket's first public comment (visible to the requester).
custom_fieldsNoCustom field values as { id, value } pairs (field ids come from your Zendesk admin settings). Call list_ticket_fields first to discover the numeric field ids and, for dropdown/multiselect fields, the exact option values Zendesk accepts.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations provide basic safety flags (not read-only, not destructive). Description adds behavioral details: 'The description becomes the first public comment of the ticket, and the new ticket id is returned.' Also explains tag formatting (lowercase, underscore). 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/5

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

Three sentences: first states purpose, second explains key behavior (first comment, returned id), third provides alternative tool guidance. Front-loaded, no waste.

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 explains that the new ticket id is returned, which is sufficient. It covers creation behavior, provides guidance on field IDs, and mentions related tools. Minor gap: no mention of error handling or rate limits, but overall adequate for an 8-param creation tool.

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%, so baseline is 3. The description repeats some schema info (e.g., description becomes first comment) and adds the return of ticket id, but no unique parameter insights beyond what the schema already provides for each property.

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 clearly states the tool's purpose: 'Create a new Zendesk support ticket with subject, description, and optional priority/type/assignee/tags.' It distinguishes from sibling tools like update_ticket, add_public_comment, etc., by noting they are for post-creation actions.

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

Usage Guidelines5/5

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

Explicitly says when to use (to create a new ticket) and when not to (after creation, use other tools). Also provides guidance on how to find valid IDs via search_users, list_ticket_fields, etc.

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

find_translation_gapsFind Help Center Translation GapsA
Read-onlyIdempotent

Audit the Help Center tree for a target locale and report every category and section that has no translation, or one that is still an unpublished draft. Use it before or after translating articles: an article published in a second locale is unreachable while its parent section only exists in the source locale. Listing sections in that locale cannot answer this — a node with no translation is simply absent, without saying why, and a node whose translation is an unpublished draft may still be listed under its draft name — so this audit reads the draft flag on each node instead of trusting that listing. Costs two listings and covers up to 100 categories and 100 sections; past that only the first page of each level is audited, and the report says so — pass category_id to narrow it. Fix what it reports with set_section_translation / set_category_translation.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeYesLocale to audit, e.g. "fr" or "de" — usually a non-default active locale of the Help Center (zendesk-hc://topology lists them). A locale that is not active is reported as a warning, since every node would then look untranslated.
category_idNoRestrict the audit to this category and the sections it contains (id from list_categories). Omit to sweep the whole tree, which costs two listings and covers up to 100 categories and 100 sections.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses the tool's cost ('Costs two listings'), its hard limits (100 categories/sections, with truncation 'the report says so'), and its internal approach (reads the draft flag on each node). This is substantial and consistent 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.

Conciseness4/5

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

The core purpose is front-loaded in the first sentence, but the later motivational example about unreachable articles could be tightened. Still, every remaining sentence conveys necessary operational detail, so it is concise enough for a complex audit tool.

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?

The description thoroughly covers what, when, why, and operational limits, but with no output schema it stops short of specifying the report's exact structure (fields, how 'missing' vs 'draft' are marked). That missing detail is the main gap; otherwise it's highly complete.

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. The description adds value by explaining the consequence of omitting category_id (whole-tree sweep with limits) and the importance of an active locale, which goes beyond the schema's descriptions without over-explaining.

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 opens with 'Audit the Help Center tree for a target locale' — a specific verb, resource, and outcome — and explicitly contrasts with sibling listing tools by explaining why 'listing sections in that locale cannot answer this.' This clearly distinguishes the tool from list_categories and list_sections.

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?

It gives explicit timing ('Use it before or after translating articles'), explains why alternatives fail, and names follow-up tools ('Fix what it reports with set_section_translation / set_category_translation'). It also advises passing category_id to narrow scope when hitting the 100/100 limit.

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

get_articleGet Help Center ArticleA
Read-onlyIdempotent

Retrieve an article by ID with full body content. For large articles, prefer get_article_outline + get_article_section to save tokens. Optionally specify locale for a translated version. Returns body (HTML), metadata, source_locale, and list of available translations.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoLocale for translated version
article_idYesArticle ID — the numeric id of the Help Center article. Obtain it from list_articles or search_articles.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations indicate readOnly, idempotent, and non-destructive. Description adds that it returns body (HTML), metadata, source_locale, and available translations, giving context beyond 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?

Four sentences, each adding distinct information: purpose, alternative guidance, optional parameter, return values. No wasted words, front-loaded with the core action.

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?

Given two parameters and no output schema, description completely covers what the tool does and what it returns, including guidance on when to use alternatives. No gaps.

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%. Description adds meaning: for article_id, it explains where to obtain it; for locale, it clarifies it's optional and for translated version. This adds value beyond the schema.

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?

Description explicitly states 'Retrieve an article by ID with full body content', using a specific verb and resource. It distinguishes itself from siblings like get_article_outline and get_article_section, providing clear differentation.

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?

Provides explicit guidance: for large articles, prefer alternatives to save tokens; optionally specify locale for translation. While it doesn't explicitly state when not to use it, the alternative advice is strong and clear.

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

get_article_outlineGet Article OutlineA
Read-onlyIdempotent

Return a compact outline of an article (list of sections delimited by h1/h2/h3, with word counts) for the given locale (defaults to source_locale). Includes available translations with their outdated status. Use get_article_section to fetch a specific section.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoLocale of the body to outline (defaults to article source_locale)
article_idYesArticle ID — the numeric id of the Help Center article. Obtain it from list_articles or search_articles.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly and idempotent hints. Description adds value by mentioning inclusion of translations with outdated status, providing behavioral context beyond 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?

Two succinct sentences: first defines purpose and output, second provides usage guidance. No wasted words.

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, description hints at return format (compact outline, translations). Parameter count is low and coverage high. Adequate for a read-only tool.

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%, but description adds context: locale defaults to source_locale, and article_id can be obtained from list_articles or search_articles.

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?

Clearly states 'Return a compact outline of an article' with specifics about sections and word counts, and distinguishes from sibling 'get_article_section'.

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 names an alternative tool (get_article_section) and implies when to use this tool to get an outline, though lacks explicit 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.

get_article_sectionGet Article SectionA
Read-onlyIdempotent

Retrieve the content of a single section of an article in a given locale. Use get_article_outline first to discover section indexes. Default format="html" for round-trip safety. Pass format="markdown" only for human review — the Markdown representation is lossy on some structures ( with , tables with multi- cells are kept as raw HTML to limit the damage, but do not round-trip markdown content back through update_article_section).

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format. "html" (default) is round-trip safe. "markdown" is lossy on some HTML structures — use only for human review, not before update_article_section.html
localeYesLocale of the body (e.g., "en-us", "fr")
article_idYesArticle ID — the numeric id of the Help Center article. Obtain it from list_articles or search_articles.
section_indexYes0-based index of the section (see get_article_outline)

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, etc. Description adds crucial behavioral details: default format='html' for round-trip safety, markdown is lossy on specific structures (<pre> with <br>, tables with multi-<p> cells), and explicitly states markdown does not round-trip. 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/5

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

Description is three sentences, front-loaded with purpose. Each sentence earns its place: purpose, prerequisite, format guidance. No redundant or vague wording.

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?

Given tool complexity (4 params, no output schema, rich annotations), the description is complete. It explains prerequisites, format trade-offs, and warnings. No gaps remain for an AI 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/5

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

Schema description coverage is 100% (baseline 3). Description adds value beyond schema by explaining that section_index should be obtained from get_article_outline, and providing detailed rationale for format parameter choices and limitations (round-trip safety, lossiness).

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 clearly states the tool retrieves content of a single section of an article in a given locale. It uses specific verbs ('Retrieve') and resources ('content of a single section of an article'), and distinguishes from siblings like get_article_outline and update_article_section.

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 advises to use get_article_outline first to discover section indexes. Provides clear when-to-use guidance for format parameter: 'html' for round-trip safety, 'markdown' only for human review, with explicit warning against round-tripping markdown content back through update_article_section.

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

get_current_userGet Current Zendesk UserA
Read-onlyIdempotent

Get the currently authenticated Zendesk user. Useful to verify identity and permissions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint as false, covering safety. The description adds no further behavioral context beyond confirming it retrieves a user. 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/5

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

Two succinct sentences with no wasted words. Every sentence serves a purpose: stating the action and suggesting a use case.

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, zero-parameter, read-only tool with rich annotations, the description is complete enough. It could optionally mention the return value structure, but the lack of output schema and simple nature make this sufficient.

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?

No parameters exist, and schema coverage is 100%. The description does not need to add parameter details. Baseline of 4 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?

The description clearly states the tool retrieves the currently authenticated Zendesk user, using a specific verb and resource. It distinguishes itself from sibling tools like get_user which require a user ID.

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 mentions it is 'useful to verify identity and permissions,' providing clear context for when to use. However, it does not explicitly exclude any scenarios or mention alternatives, but for a zero-parameter tool this is adequate.

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

get_linked_incidentsGet Linked IncidentsA
Read-onlyIdempotent

Get all incident tickets linked to a problem ticket. Returns the list of incidents that reference the given problem (Zendesk problem/incident relationship); useful to gauge a problem's blast radius before resolving it.

ParametersJSON Schema
NameRequiredDescriptionDefault
problem_idYesProblem ticket ID — the numeric id of the ticket of type "problem" whose linked incidents to list. Obtain it from search_tickets or list_tickets.

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, idempotentHint=true, and destructiveHint=false. Description adds the behavioral context of listing incidents (not modifying), and the blast radius usage, which is valuable beyond annotations. 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/5

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

Two sentences, no wasted words. First sentence states the core function; second provides usage rationale. Perfectly front-loaded.

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?

Given simple input (single integer) and rich annotations, the description provides adequate context. Does not describe the return format, but without an output schema and for a list-returning tool, agents can infer structure. A brief mention of the expected return type would improve completeness.

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% for the single parameter 'problem_id' with a detailed description. The description adds value by suggesting where to obtain the ID ('from search_tickets or list_tickets'), which is not in the schema.

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?

Description clearly states the action ('Get all incident tickets linked to a problem ticket'), identifies the resource (incident tickets linked to a problem), and distinguishes from siblings like list_tickets by specifying the problem-incident relationship.

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 the tool is useful 'before resolving a problem' to 'gauge a problem's blast radius'. This provides clear context for when to use. Does not explicitly mention when not to use, but the specific phrasing implies exclusive use for linked incidents.

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

get_organizationGet Zendesk OrganizationA
Read-onlyIdempotent

Retrieve a single organization by its numeric id. Returns full details (name, tags, domains, notes) — more than the name/id that search or list_organizations surface. Use list_organizations to browse or search for a name-based lookup.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idYesOrganization ID — the numeric id of the Zendesk organization to fetch. Obtain it from list_organizations, search, or a user record.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds behavioral context by specifying the richer return fields, complementing the annotations 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/5

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

The description is two sentences with no wasted words: first sentence states purpose and output, second provides usage guidance. Front-loaded and efficient.

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 1-parameter tool with no output schema and good annotations, the description covers purpose, usage, and output detail. Could mention error cases, but overall complete enough.

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's parameter description is thorough. The description does not add additional parameter semantics beyond what the schema provides, meeting the baseline of 3.

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 clearly states the tool retrieves a single organization by numeric id and returns full details (name, tags, domains, notes), explicitly distinguishing it from siblings like search and list_organizations that surface only name/id.

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?

The description explicitly advises to use list_organizations for browsing or name-based lookup, establishing clear context for when to use this tool versus alternatives.

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

get_ticketGet Zendesk TicketA
Read-onlyIdempotent

Retrieve a Zendesk ticket by ID, including its live SLA state (per-metric stage and breach countdown) when an SLA policy applies, plus its comments if requested. Returns ticket details (subject, status, priority, assignee, tags, description) and optionally all comments/internal notes. The per-ticket Show endpoint exposes no SLA, so the SLA block is resolved via a scoped search and may be absent for a very high-volume requester or a just-updated ticket; SLA targets and policy conditions live in list_sla_policies. This returns the ticket as it stands now; for the history of changes behind that state (who changed what, and when), use get_ticket_history. The comment thread is appended in one block — the first page of comments Zendesk returns, cut past the response character limit — so on a long ticket read it with list_ticket_comments, which pages the comments and returns the newest first.

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_idYesTicket ID — the numeric id of the ticket to fetch. Obtain it from search_tickets or list_tickets.
include_commentsNoWhen true, appends the full public comment and internal note thread to the response. Defaults to false to keep the payload small; enable it when you need the conversation, not just the ticket fields. On a long thread prefer list_ticket_comments — this flag appends one unpaginated block, so comments past Zendesk's first page are absent and the rest is cut at the response character limit.

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses that SLA may be absent for very high-volume requesters or just-updated tickets, and that comments are cut at the response character limit if present. It also clarifies that the SLA block is resolved via a scoped search, not directly from the ticket endpoint. These details go beyond the readOnlyHint and openWorldHint annotations, making the tool's limitations transparent.

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?

The description is well-structured and front-loaded: the first sentence states the core action, then it details SLA behavior, comment inclusion, and alternatives. While lengthy, each clause serves a purpose (clarifying edge cases, redirecting to siblings) and there is no superfluous content. The logical flow from core function to caveats to related tools is clear.

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?

The description provides complete context for correct usage: it explains what the tool returns, when SLA may be missing, how comment inclusion works and its truncation risk, and directs users to the appropriate sibling tools for history (get_ticket_history) and paginated comments (list_ticket_comments). It also notes the source of ticket IDs (search_tickets or list_tickets), giving the agent everything needed to decide when and how to invoke this tool.

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?

The input schema already provides thorough descriptions for both ticket_id and include_comments, including how to obtain the ID and the pagination caveat for comments. The tool description adds no new parameter-specific information beyond what is already in the schema, so it does not meaningfully enhance parameter semantics.

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 clearly states the tool retrieves a Zendesk ticket by ID and explicitly lists the returned fields (subject, status, priority, assignee, tags, description) plus optional comments and SLA state. It distinguishes itself from siblings by noting that SLA is resolved via a scoped search (list_sla_policies) and that comments are unpaginated, steering users to list_ticket_comments for long threads and to get_ticket_history for change history.

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?

The description gives explicit when-to-use guidance: it explains that include_comments should be enabled only when the conversation is needed and defaults to false to keep the payload small. It further advises using list_ticket_comments for long threads because this tool appends a single unpaginated block that may be truncated, and get_ticket_history for historical changes. These alternatives are clearly named and conditions are stated.

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

get_ticket_attachmentsGet Zendesk Ticket AttachmentsA
Read-onlyIdempotent

Retrieve ticket attachments. Images are embedded inline; other files are listed as text references.

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_idYesTicket ID — the numeric id of the ticket whose attachments to fetch. Obtain it from search_tickets or list_tickets.
attachment_idsNoAttachment IDs to fetch directly (e.g. extracted from a previous list_ticket_comments or get_ticket(include_comments=true) call). When provided, skips the comments fetch entirely. When omitted, all attachments of the ticket are returned.

TDQS

A3.8/5.0
Behavior4/5

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

The description reveals an important behavior: images are embedded inline while other files are listed as text references. This goes beyond the readOnly and idempotent annotations, giving the agent insight into the response format. However, it does not cover potential error conditions, rate limits, or pagination, so it is not fully transparent.

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?

The description is concise and front-loaded, with the core action stated in the first sentence. The second sentence adds essential detail without fluff. It avoids unnecessary words and is well-structured for quick understanding.

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?

The description, combined with the schema, provides sufficient context for an agent to invoke the tool correctly. The action is clear, parameters are fully described, and the output format is partially explained. Minor gaps remain, such as the exact meaning of 'text references' and any pagination or error handling, but these are not critical for basic usage.

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?

The parameter descriptions in the schema are comprehensive (100% coverage), explaining the purpose and origin of each parameter, including the behavior when attachment_ids is omitted. The tool description adds no additional semantic meaning to the parameters, so the baseline score of 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?

The description states the specific action 'Retrieve ticket attachments' with a clear verb and resource, and adds detail about the output format (images vs. text references). It is immediately obvious what this tool does, and it is distinct from sibling tools that focus on tickets, comments, or searches.

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 does not provide any guidance on when to use this tool versus alternatives. It does not mention scenarios where this should be preferred over get_ticket or list_ticket_comments, nor does it specify conditions that would make it unsuitable. The only implicit hint is the focus on attachments, but this is not explicit enough for an agent to make a selection decision.

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

get_ticket_historyGet Zendesk Ticket HistoryA
Read-onlyIdempotent

Read a ticket's change history — its audit trail — as a chronological, oldest-first timeline of who changed what and when. Each entry shows the actor (name and id) and the channel, then the field changes that update carried (status, priority, assignee, group, tags, custom fields) as before → after, with assignee/requester/group ids resolved to names. Comments appear as one-line presence markers (public comment vs internal note added), not their text — fetch the bodies with list_ticket_comments (or get_ticket(include_comments=true) for a short thread). Purely system-generated notification events (trigger emails, collaborator/CC notifications, pushes) are filtered out — note this filters notification delivery, not CC-list edits, which are shown as changes — and an update carrying only such events produces no entry, so the timeline stays a readable narrative rather than a raw log. Use it to answer "what happened on this ticket?", "why was it reassigned?" or "when did it go to pending?", reading oldest-first so the founding context is not missed. Read-only, and cursor-paginated oldest-first: pass the returned cursor to page a long-lived ticket toward its most recent changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from a previous response; omit for the first page. The timeline is ordered oldest-first, so paging forward moves toward the most recent changes.
page_sizeNoAudits (ticket updates) per page (1-100, default 100). Each audit is one update to the ticket and may expand to several change lines; audits carrying only system events are dropped, so a page can render fewer entries than this.
ticket_idYesTicket ID — the numeric id of the ticket whose change history to read. Obtain it from search_tickets or list_tickets.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses oldest-first ordering, resolution of assignee/requester/group ids to names, comment presence markers, filtering of system-generated notification events, and that updates containing only such events produce no entry. This is rich behavioral context that annotations cannot convey.

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?

The description is front-loaded with the core purpose and every sentence carries useful behavioral, filtering, or usage detail. It is relatively long and repeats 'oldest-first' a few times, but the tool's filtering and pagination behavior justify the length.

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 carries the burden of explaining return semantics, and it does: entry structure, actor/channel/field changes, comment markers, system-event filtering, pagination, and ordering. It also tells the agent where to obtain ticket_id (search_tickets or list_tickets), so nothing needed to select and invoke the tool 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%, so the baseline is 3. The description mostly restates cursor and page_size semantics already present in the schema (oldest-first, dropped audits) and adds no substantial new parameter meaning beyond the phrase 'long-lived 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?

The description opens with a specific verb and resource: 'Read a ticket's change history — its audit trail — as a chronological, oldest-first timeline.' It also distinguishes itself from sibling tools by explicitly stating comments appear only as presence markers and pointing to list_ticket_comments or get_ticket for comment bodies, so an agent knows exactly what this tool does and what it does not.

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?

It names concrete questions the tool answers ('what happened on this ticket?', 'why was it reassigned?', 'when did it go to pending?') and gives explicit alternatives: 'fetch the bodies with list_ticket_comments (or get_ticket(include_comments=true) for a short thread).' It also flags the filtered-event behavior so an agent won't expect a raw audit log.

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

get_userGet Zendesk UserA
Read-onlyIdempotent

Retrieve a single user by their numeric id. Returns the full user record (name, email, role, organization, tags). Use search_users when you only have a name or email, or get_current_user for the authenticated identity.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesUser ID — the numeric id of the Zendesk user to fetch. Obtain it from search_users, or from the requester/assignee fields of a ticket.

TDQS

A4.5/5.0
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 that it returns the full user record (name, email, role, etc.) and explains how to obtain the user_id (from search_users or ticket fields), which is useful context beyond 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?

Two sentences, no fluff, key information front-loaded. Every sentence adds value.

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 simple 1-parameter read operation with comprehensive annotations, the description covers everything: purpose, input, return fields, and id sourcing. No gaps.

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% with detailed description for user_id. The description reiterates 'numeric id' and adds context on obtaining it, but doesn't add significant new semantic meaning beyond the schema.

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 explicitly states 'Retrieve a single user by their numeric id', specifying the verb and resource. It distinguishes from siblings search_users and get_current_user.

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?

Provides clear when-to-use (numeric id) and when-not-to (search_users for name/email, get_current_user for authenticated identity), with explicit alternatives.

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

get_view_ticketsGet Tickets In A ViewA
Read-onlyIdempotent

Read the tickets inside a Zendesk view, in the view's own configured sort order — the same order the agent sees in the Zendesk UI — which is the natural way to work a named queue like "Unassigned tickets" or "Breaching today". Accepts the view by title or by numeric id (discover both with list_views); a title is matched case-insensitively against the agent's active views, and on no match the available titles are returned so you can retry in one step. Tickets come back with the same fields as list_tickets and are cursor-paginated; there is no live SLA block here (use search_tickets when you need per-ticket SLA state), and sort_by/sort_order override the view's order when you want a different cut.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewYesThe view to read: its exact title as shown in Zendesk (e.g. "Unassigned tickets") or its numeric id from list_views. A title is matched case-insensitively against your active views; on no match the tool returns the available titles instead of erroring, so you can retry with a correct one.
cursorNoPagination cursor from a previous response; omit for the first page.
sort_byNoOptional column to sort by, overriding the view's own sort. Must be one of the view's columns (e.g. "status", "priority", "updated_at", or a custom field id); "subject" and "submitter" are not sortable. Omit to keep the view's configured order.
page_sizeNoTickets per page (1-100, default 100).
sort_orderNoSort direction applied to sort_by: "asc" (oldest/lowest first) or "desc" (newest/highest first). Only meaningful together with sort_by; omit to keep the view's configured direction.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations indicate readOnlyHint, idempotentHint, openWorldHint, and no destructive action. The description adds value by detailing pagination with cursor, the lack of live SLA block, and the return format matching list_tickets. 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.

Conciseness4/5

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

The description is a single, dense paragraph, but every sentence adds value. It could be slightly more structured (e.g., bullet points for parameters), but is efficient and front-loaded with the key action.

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?

Given 5 parameters, no output schema, and strong annotations, the description covers all essential aspects: how to specify view, pagination, sort override, error handling, and limitations. No apparent gaps.

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%, but the description enriches each parameter: explains the anyOf for view, case-insensitivity and fallback behavior; cursor refers to previous response; sort_by enumerates examples and non-sortable fields; sort_order clarifies dependency on sort_by. Adds meaningful context beyond schema.

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 clearly states the main purpose: 'Read the tickets inside a Zendesk view' and emphasizes the view's own sort order. It distinguishes from sibling tools like search_tickets and list_tickets by noting the absence of SLA state and the use of view-specific ordering.

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?

Provides explicit guidance: use search_tickets for per-ticket SLA state, and explains how sort_by/sort_order can override the view's order. Also describes how to specify the view by title or id, and the case-insensitive matching with error recovery via returned titles.

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

list_article_attachmentsList Article AttachmentsA
Read-onlyIdempotent

List all attachments for an article. Returns attachment metadata only (id, file name, content type, size, URL), not the file bytes; both inline and block attachments are included. This is for Help Center articles — for attachments on support tickets use get_ticket_attachments instead. Upload new files with create_article_attachment.

ParametersJSON Schema
NameRequiredDescriptionDefault
article_idYesID of the Help Center article whose attachments to list.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false. The description adds that only metadata is returned (not file bytes) and that both inline and block attachments are included, which goes 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/5

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

Three sentences efficiently convey purpose, return type, scope, alternatives, and related actions. Front-loaded with the core action, no extraneous 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 simple read-only list tool, the description fully explains what is returned (attachment metadata fields), the scope (both inline and block), and provides usage context via sibling distinction and upload reference. Annotations cover safety, and the output format is described despite no output schema.

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% for the single parameter article_id, with a clear schema description. The description does not add new information about the parameter beyond confirming it's for Help Center articles, meeting the baseline of 3.

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 clearly states 'List all attachments for an article' and specifies that it returns metadata (id, file name, content type, size, URL). It also distinguishes from get_ticket_attachments, which is a sibling tool.

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?

The description explicitly says 'This is for Help Center articles — for attachments on support tickets use get_ticket_attachments instead' and mentions 'Upload new files with create_article_attachment', providing clear when-to-use and when-not-to-use guidance.

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

list_articlesList Help Center ArticlesA
Read-onlyIdempotent

List articles (metadata only, no body). Use get_article for full content. Optionally filter by section ID and locale. Supports sort_by ("title", "created_at", "updated_at") and include_translations: true to show available translation locales per article. Note: include_translations must be re-sent on each paginated request.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from a previous response; omit for the first page.
localeNoRestrict to a single locale, e.g. "en-us" or "fr". Omit for the default locale.
sort_byNoField to sort by; "position" (the default) is the manual order set in Guide.position
page_sizeNoArticles per page (1-100, default 100).
section_idNoRestrict the listing to one section (numeric id from list_sections). Omit to list articles across all sections.
sort_orderNoSort direction: ascending or descending.asc
include_translationsNoInclude available translation locales per article (causes 1 extra API call per article)

TDQS

A4.6/5.0
Behavior5/5

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

Discloses that it returns metadata only, that include_translations causes extra API calls, and pagination requirement. Adds value beyond readOnly and idempotent 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?

Two concise sentences plus a note. Front-loaded with purpose, no filler. Every sentence provides value.

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?

Covers purpose, parameters, pagination behavior, and performance cost. Lacks explicit mention that results are paginated (but schema has cursor). Adequate for the complexity.

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 baseline 3. Description adds useful context like filtering options and sort_by values, and the performance note for include_translations. Exceeds baseline slightly.

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?

Clearly states it lists articles with metadata only, distinguishes from get_article for full content. Specific verb+resource+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/5

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

Explicitly mentions using get_article for full content and notes include_translations must be re-sent on pagination. Could be more explicit about when not to use, but adequate.

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

list_article_translationsList Article TranslationsA
Read-onlyIdempotent

List all available translations for an article (metadata only, no body: locale, title, draft, updated_at). Use get_article with locale for full translated content.

ParametersJSON Schema
NameRequiredDescriptionDefault
article_idYesArticle ID — the numeric id of the Help Center article. Obtain it from list_articles or search_articles.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, establishing a safe, read-only, and repeatable call. The description adds that only metadata is returned (no body), which supplements the annotations 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/5

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

Two sentences with no wasted words. The first sentence states the action and scope, the second provides a direct pointer to an alternative. Perfectly front-loaded.

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?

Given the annotations (readOnly, openWorld, idempotent) and high schema coverage, the description is complete: it specifies what is returned (metadata fields), how to get full content, and where to obtain the required parameter. No output schema exists, but the description sufficiently describes the response shape.

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 schema already provides a full description for article_id, including how to obtain it (from list_articles or search_articles). This adds context beyond the schema's basic type and constraints, improving usability.

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 clearly states it lists available translations for an article, specifies included metadata fields (locale, title, draft, updated_at), and distinguishes itself from get_article for full content. The verb 'list' and resource 'article translations' are specific and 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/5

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

The description advises using get_article with locale for full translated content, providing clear guidance on when to use this tool vs. the alternative. It effectively tells the agent to use this for metadata-only retrieval.

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

list_categoriesList Help Center CategoriesA
Read-onlyIdempotent

List all Help Center categories. Categories are the top level of the Guide hierarchy (category → section → article); each entry includes its id, name and locale. Results are cursor-paginated. Pair a returned category id with list_sections to drill down, then list_articles to reach articles. Pass a locale to read category names in that translation.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from a previous response; omit for the first page.
localeNoLocale for category names (e.g., "en-us", "fr"). Defaults to the Help Center default locale.
page_sizeNoCategories per page (1-100, default 100).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare read-only and non-destructive behavior; the description adds useful context about cursor-pagination and result structure (id, name, locale), enhancing transparency beyond 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?

The description is concise, with three short sentences. The main action is front-loaded, and each sentence provides necessary information without redundancy.

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 list tool with three optional parameters and no output schema, the description explains pagination, result fields, and integration with other tools. Slight lack of specification on ordering, but overall complete enough.

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?

All parameters are fully described in the schema (100% coverage). The description mentions locale and pagination cursor but adds no new semantic meaning beyond the 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?

The description clearly states the tool lists all Help Center categories and explains the hierarchy (category -> section -> article), distinguishing it from sibling tools like list_sections and list_articles.

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?

Provides clear context on when to use (top-level listing) and how to drill down using category id with list_sections and list_articles. Does not explicitly state when not to use but implicitly guides towards alternatives.

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

list_category_translationsList Category TranslationsA
Read-onlyIdempotent

List the translations of a Help Center category: for each locale, the localized name, whether a description is set, and whether the translation is published or still a draft. Reach for this when a category looks wrong in a locale, because list_categories with that locale cannot settle it: a category with no translation is omitted from it, while a category whose translation is an unpublished draft may still be listed there under the draft name — so appearing in that listing does not mean published, and the draft flag here is what decides. Fix either case with set_category_translation; to sweep every category and section at once, use find_translation_gaps.

ParametersJSON Schema
NameRequiredDescriptionDefault
category_idYesCategory ID — the numeric id of the Help Center category. Obtain it from list_categories or the zendesk-hc://topology resource.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and destructiveHint, but the description adds critical behavioral context beyond annotations: it explains the subtle draft-versus-published distinction and how list_categories can mislead (omitting untranslated categories or listing draft names). This enriches the agent's understanding of what the tool reveals.

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?

The description is front-loaded with the core purpose, then provides usage rationale and alternatives, with every sentence contributing value. Though longer than typical, the complexity of the draft/published pitfall justifies the length. 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?

Given the tool's moderate complexity and lack of output schema, the description adequately explains returned fields, the key behavioral nuance, and how it fits with siblings. The agent has all necessary context to select and invoke the tool 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 parameter category_id, including how to obtain it. The description adds no additional parameter detail, so it neither helps nor hurts. Baseline 3 is appropriate since the schema already carries the full parameter burden.

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 clearly states the tool's function: 'List the translations of a Help Center category' and specifies the exact output attributes (localized name, description set, published/draft). It explicitly contrasts with sibling tools like list_categories and find_translation_gaps, making the purpose distinct and unambiguous.

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?

Provides explicit guidance on when to use this tool: 'Reach for this when a category looks wrong in a locale' and explains why list_categories is insufficient. It also names alternatives and follow-ups: 'Fix either case with set_category_translation; to sweep every category and section at once, use find_translation_gaps.' This fully covers when/when-not/alternatives.

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

list_content_tagsList Content TagsA
Read-onlyIdempotent

List Guide content tags, which are end-user-visible labels that help readers find related articles. Results are cursor-paginated (follow the returned cursor to enumerate the full list) and sorted by name by default. Pass name_prefix to look a tag up by the start of its name — do this before create_content_tag to reuse an existing tag rather than fragment the taxonomy. For internal, non-end-user search labels, see list_labels instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from a previous response; omit for the first page.
sort_byNoField to sort by; "name" (the default) lists tags alphabetically.name
page_sizeNoContent tags per page (1-30, default 30). The Guide content-tags endpoint caps each page at 30; follow the returned cursor to enumerate the full list.
sort_orderNoSort direction: ascending or descending.asc
name_prefixNoReturn only content tags whose name starts with this prefix (prefix match — not a substring or fuzzy search). Use the full name to check whether a specific tag already exists before creating it.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already indicate readOnly, openWorld, idempotent, non-destructive. The description adds details: cursor-based pagination, default sort by name, page size cap of 30, and prefix-match behavior for name_prefix. No contradictions.

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, front-loaded with purpose, and no wasted words. Every phrase adds value.

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?

Given the read-only nature, full schema coverage, and rich annotations, the description covers all necessary context: pagination, sorting, prefix search, and relationship to creation. No output schema needed.

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% with all parameters described. The description adds context for name_prefix: 'use the full name to check whether a specific tag already exists before creating it', which enhances parameter semantics beyond the schema.

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 clearly identifies the tool as listing 'Guide content tags' and defines them as 'end-user-visible labels that help readers find related articles'. It also distinguishes from sibling tool 'list_labels' by contrasting with internal labels.

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?

The description provides explicit guidance: use name_prefix to check for existing tags before creating to avoid taxonomy fragmentation, and references list_labels for internal labels. It also specifies cursor pagination for full enumeration.

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

list_labelsList Article LabelsA
Read-onlyIdempotent

List all article labels. Labels improve Help Center search ranking and are not visible to end users.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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, idempotentHint=true, and destructiveHint=false. The description adds valuable context that labels improve search ranking and are not visible to end users, which helps the agent understand the domain and why listing labels is useful. No behavioral traits are missing beyond what annotations 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?

Two sentences, zero wasted words. The description is front-loaded with the core action and immediately provides relevant context. Every sentence serves a purpose.

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

Completeness3/5

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

The tool is simple with no parameters and no output schema. The description explains the domain of labels but does not describe the return format (e.g., what fields each label object contains). Since no output schema exists, the description should ideally clarify the output structure. It is partially complete but lacks this detail.

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?

There are no parameters, so schema coverage is trivially 100%. The description adds meaning by explaining the nature of labels, which is indirectly related to the output. Per baseline for zero parameters, a score of 4 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?

The description clearly states 'List all article labels' with a specific verb and resource. It distinguishes this tool from siblings by focusing on 'article labels' specifically, even though there is a separate list_content_tags tool. The additional context about labels improving search ranking and not being visible to end users adds specificity.

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 provides no guidance on when to use this tool versus alternatives like list_content_tags. It does not specify prerequisites, use cases, or when not to use it. The agent is left to infer usage from the tool name alone.

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

list_macrosList Zendesk MacrosA
Read-onlyIdempotent

List the active macros available to the authenticated user. A macro bundles a canned reply and/or a set of field changes (status, priority, assignee, group, tags, custom fields) an agent applies to a ticket in one gesture; this returns each macro id, title, description, availability scope, and its ordered list of actions, offset-paginated. Results are scoped by per-user OAuth to what the current user can see, so no shared admin key is needed. Pass a macro id from here to preview_macro_diff to preview its effect on a specific ticket.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number for offset pagination. Increment it while keeping `per_page` fixed to fetch subsequent pages; page 1 is the first page.
per_pageNoNumber of results per page for offset pagination (1-100). Pair with `page` to walk large result sets; the response header reports the total count and whether more pages remain.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint. The description adds value by specifying offset pagination details, per-user OAuth scope, and that no shared admin key is needed. It also describes the returned structure (id, title, etc.), providing context beyond annotations.

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?

The description is informative with 4-5 sentences, front-loaded with the main purpose. Each sentence adds value (purpose, definition, return fields, usage hint). Could be slightly more concise, but structure is clear.

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?

Despite no output schema, the description fully explains return fields and pagination. Parameters are covered by schema. The tool is used to list macros, with clear context for follow-up (preview_macro_diff). Complete for a list operation.

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 100% schema coverage, both parameters (page, per_page) are well-described in the schema with defaults and constraints. The description mentions offset pagination but does not add significant new meaning beyond the schema. 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?

The description clearly states it 'List the active macros available to the authenticated user' and specifies the returned fields (id, title, description, scope, actions) with offset pagination. This specific verb-resource combination distinguishes it from siblings like preview_macro_diff.

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 implies usage context: to list macros as a precursor to preview_macro_diff by stating 'Pass a macro id from here to preview_macro_diff'. It also notes OAuth scoping. However, no explicit when-not-to-use or alternative tools are mentioned, though siblings provide coverage.

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

list_organizationsList Zendesk OrganizationsA
Read-onlyIdempotent

List all organizations with pagination. Returns the name and id of each organization plus basic fields; results are cursor-paginated. Use get_organization with an id for full details (tags, domains, notes), or search for query-based lookups by name. Organizations group end users and can be referenced when creating or filtering tickets.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from a previous response; omit for the first page.
page_sizeNoOrganizations per page (1-100, default 100).

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. The description adds pagination behavior (cursor-based) and return fields (name, id, basic fields), which is helpful but not exhaustive.

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?

Four sentences front-load the main action, each sentence serves a purpose (pagination, returns, alternatives, use cases). 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 list tool with 2 parameters and good annotations, the description covers pagination, return contents, and usage context. No output schema but enough detail for agent to understand results.

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% with descriptions for both parameters. The description adds context like 'omit for the first page' for cursor, adding value beyond schema.

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 states 'List all organizations with pagination' with specific verb and resource, and distinguishes from siblings get_organization and search by mentioning their different purposes.

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 tells when to use alternatives: 'Use get_organization with an id for full details' and 'search for query-based lookups by name', also provides context for usage in ticket creation/filtering.

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

list_permission_groupsList Permission GroupsA
Read-onlyIdempotent

List all Guide permission groups. Use this to find the permission_group_id required when creating articles.

ParametersJSON Schema
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 indicate readOnly, openWorld, idempotent, non-destructive. Description adds that it lists 'all' groups and returns permission_group_id, which is helpful context. No contradictions.

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 concise sentences, no waste. Front-loaded with 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?

Complete for a parameterless list tool with good annotations. Output usage is specified.

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?

No parameters; schema coverage 100%. Description adds no parameter info but none needed. Baseline 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?

The description clearly states the tool lists all Guide permission groups and connects it to the use case of finding permission_group_id for creating articles. This distinguishes it from sibling list 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?

Explicitly states when to use: to find permission_group_id for article creation. No exclusion criteria needed for such a simple tool.

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

list_promoted_articlesList Promoted Help Center ArticlesA
Read-onlyIdempotent

List the promoted ("featured") Help Center articles — the small, editorially-curated set surfaced at the top of their sections. Returns metadata only (no body); use get_article for full content. COST: the Help Center API has no server-side promoted filter, so this scans article pages (one Zendesk API request per page, up to ZENDESK_ARTICLE_RESOURCES_SCAN_MAX_PAGES, default 20) and filters client-side — potentially costly on a large Help Center. Each call performs a fresh, uncached scan, so avoid calling it repeatedly. On a very large Help Center some promoted articles may be omitted, and both the omission and the number of pages scanned are flagged in the output. Lists the default locale. To promote or unpromote an article, use update_article with promoted (requires Help Center admin / Guide admin rights).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations, the description reveals significant behavioral traits: it scans article pages via multiple API requests, is uncached, potentially costly, may omit promoted articles on large Help Centers, and flags omissions and page count in the output. 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/5

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

Though longer than typical, every sentence adds essential information: purpose, metadata-only return, cost caveat, uncached behavior, omission flags, locale scope, and modification alternative. The 'COST:' label structures the warning effectively, and the core purpose is front-loaded.

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?

Without an output schema, the description clarifies that only metadata is returned and that omission/page-count flags appear in the output. It covers locale and modification alternatives, but does not enumerate specific metadata fields, which is a minor gap for a list tool.

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 has zero parameters, so the empty schema fully defines the input surface. Since there are no parameters, the description cannot add parameter-level semantics; the baseline of 4 for 0-param tools 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?

The description opens with a specific verb ('List') and a precisely scoped resource ('promoted Help Center articles'), further clarifying them as the curated set surfaced at the top of sections. It also distinguishes from siblings by directing to get_article for full content and update_article for modifications.

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 states when to use this tool vs alternatives: use get_article for full content, use update_article with `promoted` to modify promotion status. It also provides practical guidance on cost and repeated calls, advising against frequent invocation on large Help Centers.

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

list_sectionsList Help Center SectionsA
Read-onlyIdempotent

List Help Center sections. Sections are the middle level of the Guide hierarchy (category → section → article) and group related articles; each entry includes its id, name, category_id and locale. Results are cursor-paginated. Pass category_id to list only one category's sections (ids come from list_categories), then use a section id with list_articles. Pass a locale to read section names in that translation.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from a previous response; omit for the first page.
localeNoLocale for section names (e.g., "en-us", "fr"). Defaults to the Help Center default locale.
page_sizeNoSections per page (1-100, default 100).
category_idNoRestrict to sections of this category (id from list_categories). Omit to list every section.

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, idempotentHint, destructiveHint. Description adds cursor-based pagination and typical fields returned, providing useful behavioral context beyond 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?

Four sentences, front-loaded with purpose. Each sentence adds unique value (purpose, hierarchy, pagination, parameter usage). No redundant or extraneous text.

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 list tool with no output schema, description adequately explains what is returned, how pagination works, and how parameters connect to sibling tools. Sufficient for correct invocation.

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% with descriptions. Description adds value by explaining that category_id comes from list_categories and that section id feeds into list_articles, enhancing understanding beyond the schema.

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?

Clearly states 'List Help Center sections' and explains the hierarchy (category → section → article). Specifies fields returned (id, name, category_id, locale). Distinguishes from siblings like list_categories and list_articles.

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?

Provides explicit context on when to use: pass category_id to filter by category, then use section id with list_articles. Mentions locale for translations. Could be more explicit about when not to use, but adequate.

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

list_section_translationsList Section TranslationsA
Read-onlyIdempotent

List the translations of a Help Center section: for each locale, the localized name, whether a description is set, and whether the translation is published or still a draft. Reach for this when a section looks wrong in a locale, because list_sections with that locale cannot settle it: a section with no translation is omitted from it, while a section whose translation is an unpublished draft may still be listed there under the draft name — so appearing in that listing does not mean published, and the draft flag here is what decides. Fix either case with set_section_translation; to sweep every category and section at once, use find_translation_gaps.

ParametersJSON Schema
NameRequiredDescriptionDefault
section_idYesSection ID — the numeric id of the Help Center section. Obtain it from list_sections or the zendesk-hc://topology resource.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds crucial behavioral context: it returns per-locale flags for description and published status, and clarifies the subtle draft-vs-missing distinction that list_sections cannot reveal. 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.

Conciseness4/5

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

The first sentence is concise and front-loaded. The second sentence is long but packed with necessary edge-case reasoning and alternative tool guidance. No filler, but the density could be slightly trimmed without losing value.

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?

Given no output schema, the description fully covers what the tool returns (for each locale: name, description-set flag, published/draft) and how to interpret it. It also covers edge cases and corrective actions, making it contextually complete for a list operation.

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%; the only parameter (section_id) is fully documented with its type, source, and how to obtain it. The description adds no additional parameter semantics, which matches the baseline of 3 for high schema coverage.

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 clearly states that the tool lists translations of a Help Center section with details per locale (localized name, description set?, published/draft). It also distinguishes itself from list_sections and other related translation tools, making its purpose unambiguous.

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?

It explicitly says when to use the tool ('when a section looks wrong in a locale'), explains why the alternative list_sections is insufficient, and points to set_section_translation and find_translation_gaps for related actions. This is exemplary usage guidance.

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

list_sla_policiesList SLA PoliciesA
Read-onlyIdempotent

List the configured SLA policies with their filter conditions and per-priority reply/resolution targets. Use this to explain why a given target applies to a ticket and to reconstruct deadlines deterministically instead of hard-coding the policy matrix. Requires an admin token (or a custom role granted the SLA-management permission); a standard agent token gets 403 here, though it can still read live per-ticket SLA via get_ticket / search_tickets.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number for offset pagination. Increment it while keeping `per_page` fixed to fetch subsequent pages; page 1 is the first page.
per_pageNoNumber of results per page for offset pagination (1-100). Pair with `page` to walk large result sets; the response header reports the total count and whether more pages remain.

TDQS

A4.6/5.0
Behavior5/5

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

Description adds critical behavioral info beyond annotations: the authentication requirement (admin vs agent) and that standard agents get 403. Annotations already indicate read-only/idempotent, so no contradictions.

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 concise sentences with front-loaded purpose. Every sentence adds value: purpose, use case, and permissions. No redundant or missing 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?

Covers purpose, use case, and permissions. Could benefit from explicitly stating it returns an array of policy objects, but the description's high-level overview is sufficient for selection.

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 well-described pagination params. Description adds no extra parameter-level detail beyond the schema, 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?

Description clearly states the tool lists SLA policies with filter conditions and per-priority targets. It distinguishes from siblings like get_ticket (per-ticket SLA) by specifying it retrieves the policy configuration itself.

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 states when to use (reconstruct deadlines deterministically) and when not to (use get_ticket/search_tickets for per-ticket SLA). Also specifies required permissions (admin token) and notes alternatives for standard agents.

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

list_ticket_commentsList Zendesk Ticket CommentsA
Read-onlyIdempotent

Read a ticket's conversation — public replies and internal notes with their full bodies — one cursor-paginated page at a time, newest comment first. Each entry carries the comment id, the author resolved to a name, the timestamp, whether it is public or internal, and the ids of any attached files. Prefer this over get_ticket(include_comments=true) whenever a thread is long or you only need the latest exchange: get_ticket appends the thread as one unpaginated block and cuts it past the response character limit, which drops the most recent comments first. Keep sort_order "desc" (the default) to read the latest reply first and follow the returned cursor to walk further back in time, or pass "asc" to replay the conversation forward from the ticket's opening description. For who changed which field and when — without comment bodies — use get_ticket_history; to download the attached files themselves, pass the attachment ids shown here to get_ticket_attachments.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from a previous response; omit for the first page. Zendesk issues it for the ordering that response used, so after changing sort_order drop the cursor and start again from the first page.
page_sizeNoComments per page (1-100, default 20). The default is deliberately small because comment bodies are long and a bigger page risks being cut short by the response character limit; follow the returned cursor rather than raising it.
ticket_idYesTicket ID — the numeric id of the ticket whose conversation to read. Obtain it from search_tickets or list_tickets.
sort_orderNoChronological direction of the page. "desc" (the default) starts at the most recent comment and walks backward in time, which is what you want to see the latest reply; "asc" replays the conversation forward, starting from the ticket's opening description — that first comment therefore lands on the last page under "desc".desc

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare readOnly and idempotent, and the description adds behavioral details: cursor-based pagination, default small page size due to response character limits, and what the response contains (comment id, author, timestamp, public/internal flag, attached file ids). This goes beyond annotations to disclose runtime 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/5

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

The description is dense but well-structured, using semicolons and explicit cross-references. Every sentence adds value—no fluff or repetition. It efficiently packs purpose, differentiation, pagination, and parameter guidance into a few lines.

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 read-only list tool, the description covers the return content, pagination behavior, sort order, and relationship to sibling tools. It addresses the likely questions an agent would have (how to get ticket_id, when to use alternatives) and aligns with the openWorldHint annotation.

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?

The schema covers all parameters with descriptions, and the tool description augments them: ticket_id source (search_tickets/list_tickets), sort_order semantics (desc starts at newest, asc replays forward), and page_size rationale (deliberately small to avoid truncation). This gives full parameter context beyond the schema.

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 clearly states the tool reads a ticket's conversation, specifying the resource (ticket) and the action (list comments). It explicitly differentiates from get_ticket, get_ticket_history, and get_ticket_attachments, making its niche unambiguous for an agent.

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?

It gives explicit usage guidance: prefer this over get_ticket for long threads or when only needing latest exchange, and directs to get_ticket_history for audit trails and get_ticket_attachments for file downloads. It also explains how to use sort_order and cursor for pagination.

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

list_ticket_fieldsList Ticket FieldsA
Read-onlyIdempotent

List the ticket field definitions configured on this Zendesk (both system fields and custom fields), returning each field's id, type, whether it is active/required, and — for dropdown and multiselect fields — the valid option values. Use this to discover the numeric field ids and accepted option tags that create_ticket and update_ticket expect in their custom_fields argument, so a natural-language intent ("set severity to High") maps to the right id and a value Zendesk will accept instead of a blind guess. Read-only reference lookup; cursor-paginated in Zendesk's default field order.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from a previous response; omit for the first page.
page_sizeNoTicket field definitions per page (1-100, default 100).

TDQS

A4.5/5.0
Behavior5/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 valuable context: it returns specific fields, mentions cursor pagination, and notes that option values are provided for dropdown/multiselect fields. There is 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/5

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

The description is concise, with only four sentences that are all informative. It front-loads the action ('List the ticket field definitions') and each sentence adds distinct value: scope, return details, use case, and pagination info. No superfluous text.

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 simple read-only list tool with no output schema, the description adequately covers what the tool returns and why it's useful. It does not discuss error handling or rate limits, but the annotations cover safety. Given the tool's simplicity, this is 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%, so the schema already documents both parameters (cursor and page_size). The description mentions cursor pagination but adds no further details about parameter usage or constraints beyond what the schema provides. Thus baseline score of 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?

The description explicitly states it lists ticket field definitions (both system and custom fields) and details the returned fields (id, type, active/required, option values). This clearly distinguishes it from sibling list tools which list other entities like tickets or articles.

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 provides explicit guidance on when to use this tool: to discover field ids and option tags for create_ticket and update_ticket. It does not explicitly state when not to use it, but the purpose is clear enough that an agent would not misuse it. No alternative tool is needed as it's the only one listing field definitions.

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

list_ticketsList Zendesk TicketsA
Read-onlyIdempotent

List tickets with cursor-based pagination, in Zendesk's default order (ascending ticket id), not by recency. Page size is controlled by page_size (not per_page, which is the offset-based parameter used by search_tickets); paginate by passing the returned cursor. To find tickets by recency or any other criterion, use search_tickets with a query.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from a previous response; omit for the first page.
page_sizeNoTickets per page (1-100, default 100).

TDQS

A4.9/5.0
Behavior5/5

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

Adds value beyond annotations by detailing cursor-based pagination, page_size naming convention vs per_page in search_tickets, and ordering behavior (ascending id, not recency).

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 concise sentences, front-loaded with main action, no unnecessary words. Each sentence adds value.

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?

Complete explanation for a simple list tool with two parameters, covers pagination, ordering, and comparison with sibling. No missing context.

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 already describes parameters well (100% coverage); description adds useful context about cursor usage and distinguishes page_size from per_page. Adds meaning beyond schema.

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?

Clearly states verb 'List' and resource 'tickets', distinguishes default ordering (ascending id) and pagination method, differentiating it from search_tickets.

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 tells when to use this vs search_tickets: for ordering by recency or other criteria, use search_tickets. Also mentions default ordering and pagination specifics.

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

list_user_segmentsList User SegmentsA
Read-onlyIdempotent

List all user segments. User segments control article visibility (who can view). Use the ID when creating or updating articles.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 and destructiveHint=false. The description adds useful context that user segments control article visibility, which helps the agent understand the relevance of the data. No contradictions.

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, no wasted words. Essential information is front-loaded.

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 simple, zero-parameter, read-only list tool, the description is complete. It explains the purpose and how the result is used. No output schema is needed.

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?

There are no parameters, and schema coverage is 100%. Baseline is 3. The description does not add parameter-specific information, but none is needed.

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 clearly states it 'list all user segments' and explains that user segments control article visibility. This distinguishes it from other list tools that operate on different resources (articles, tickets, etc.).

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 says 'Use the ID when creating or updating articles,' which indicates the primary use case. It does not explicitly state when not to use it, but the context is clear enough.

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

list_viewsList Zendesk ViewsA
Read-onlyIdempotent

List the agent's active Zendesk views — the saved ticket queues ("Unassigned tickets", "My open tickets", "Breaching today") the agent sees in the Zendesk UI — each with its current ticket count so you can tell at a glance where the workload sits. Views are per-agent scoped, so per-user auth returns exactly the queues this agent can see, with no shared key. Counts come from Zendesk's cache and can lag by up to about an hour (shown as "(count updating)" while a fresh value is still being computed); pass a view's title or id to get_view_tickets to read the tickets inside it.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from a previous response; omit for the first page.
page_sizeNoViews per page (1-100, default 100).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. Description adds critical context about count staleness (up to an hour lag) and the '(count updating)' indicator, providing behavioral insights beyond annotations.

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 sentences, front-loaded with purpose, and efficiently conveys key details without fluff. All sentences are informative and earn their place.

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, description explains that the tool returns views with ticket counts and notes caching behavior, which is sufficient for an agent to understand the tool's output and how to use it.

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% for the two parameters (cursor, page_size). Description does not add additional parameter semantics beyond what the schema already provides.

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?

Description clearly specifies verb 'list' and resource 'Zendesk views', and distinguishes from sibling tools like get_view_tickets by mentioning that views are per-agent scoped and that counts are included. It also differentiates from list_tickets by focusing on views.

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?

Description explains that views are per-agent scoped and recommends using get_view_tickets to read tickets inside a view, giving context on when to use this tool vs. alternatives. However, it does not explicitly state when not to use it.

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

manage_tagsManage Ticket TagsA
DestructiveIdempotent

Add or remove tags on a ticket. Performs an incremental read-modify-write: it fetches the ticket's current tags, adds those in add and deletes those in remove, then saves the merged set — tags you don't list are left untouched and duplicates are collapsed. Adding a tag already present, or removing one that is absent, is a no-op (idempotent). Returns the ticket's full tag set after the update. Use this for incremental tag edits; to overwrite the entire tag set at once, or to change tags alongside other fields, use update_ticket instead. Find the ticket id via search_tickets or list_tickets.

ParametersJSON Schema
NameRequiredDescriptionDefault
addNoTags to add. Zendesk tags are single tokens: a value containing spaces is stored as separate tags rather than one tag, so join multi-word tags yourself with an underscore or dash (e.g. "urgent_request"). Adding a tag already on the ticket is a no-op. Omit to only remove.
removeNoTags to remove. Removing a tag that is not present is a no-op; tags not listed here stay in place. Omit to only add.
ticket_idYesTicket ID — the numeric id of the ticket whose tags to modify. Obtain it from search_tickets or list_tickets.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate destuctiveHint=true, idempotentHint=true, openWorldHint=true. Description adds value by explaining the no-op behavior for redundant adds/removes, duplicate collapsing, and return of full tag set. 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/5

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

Concise, front-loaded, and well-structured. Every sentence adds value: behavior, idempotency, return value, when to use alternatives, and how to find ticket id. 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 tool with 3 parameters and no output schema, the description fully explains behavior, edge cases (no-op), return value, and how to obtain required parameter. Complete and actionable.

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 parameter descriptions are already detailed. Description reinforces behavior but does not add significant new meaning beyond schema for individual parameters.

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?

Clearly states 'add or remove tags on a ticket' and explains the incremental read-modify-write behavior, distinguishing it from update_ticket which overwrites the entire tag set.

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

Usage Guidelines5/5

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

Explicitly says use this for incremental tag edits and directs to update_ticket for overwriting or changing alongside other fields. Also mentions how to obtain ticket_id via search_tickets or list_tickets.

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

preview_macro_diffPreview a Macro Diff on a TicketA
Idempotent

Preview the exact changes a macro would make to a specific ticket, as a before → after diff, WITHOUT saving anything. Orchestrates two reads — the ticket's current state and Zendesk's macro-apply preview (which returns the whole resulting ticket) — and returns only the fields the macro actually changes (status, priority, assignee, group, tags, custom fields) plus the canned reply with its public/internal flag; unchanged and identity fields are omitted. Nothing is committed: to apply it, follow up with update_ticket for the field changes and add_public_comment or add_private_note for the reply. This deliberate two-step keeps the mutation explicit and reviewable rather than hidden. Find macro ids via list_macros and the ticket id via search_tickets or list_tickets.

ParametersJSON Schema
NameRequiredDescriptionDefault
macro_idYesMacro ID — the numeric id of the macro to preview. Obtain it from list_macros.
ticket_idYesTicket ID — the numeric id of the ticket to preview the macro against. Obtain it from search_tickets or list_tickets.

TDQS

A4/5.0
Behavior1/5

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

Annotations declare readOnlyHint=false, implying possible writes, but the description insists 'nothing is committed' and tool is read-only. This contradiction misleads agents about side effects.

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 purpose, but multiple sentences could be slightly tighter. Still, every sentence adds value and no redundancy.

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 description fully explains return format (only changed fields, omitted identity fields), prerequisites, and two-step workflow, making the tool self-contained.

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 baseline is 3. Description adds context by explaining how to obtain macro_id and ticket_id, and that they are numeric IDs, exceeding schema documentation.

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 uses a specific verb ('preview'), resource ('macro diff on a ticket'), and scope ('as a before → after diff, WITHOUT saving anything'), clearly distinguishing from sibling tools like update_ticket and add_comment.

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 states when to use (to preview changes before applying) and when not (nothing committed; must follow up with update_ticket and comment tools). Provides alternatives for obtaining macro IDs and ticket IDs via list_macros and search_tickets.

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

reorder_articleReorder Help Center ArticleA
DestructiveIdempotent

Reorder an article within its current section by moving it relative to its siblings (top, bottom, or before/after another article), and return whether the new order was applied. This is the reliable way to satisfy "put this article first/last" requests: it writes the minimal set of article positions needed to make the order deterministic, because Zendesk leaves newly created articles tied at position 0 where a plain position update is silently ambiguous. It does NOT move the article to a different section — use update_article with section_id for that. Zendesk exposes no way to read whether a section is manually or automatically sorted, so when the section is sorted automatically (by date or alphabetically) the position writes are ignored; this tool detects that after the fact and returns guidance to switch the section to manual ordering in Guide. A move may reposition several neighbouring articles; when that count exceeds a configurable safety threshold the call is refused unless confirm is set to true.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesWhere to move the article relative to its section siblings: "top" (becomes first), "bottom" (becomes last), or "before"/"after" a specific reference article. "before" and "after" require reference_article_id.
confirmNoSafety guard for large reorders. When the move would rewrite more article positions than the configured threshold (ZENDESK_REORDER_CONFIRM_THRESHOLD, default 20), the tool refuses and reports the count until you pass true here. Has no effect on small reorders.
normalizeNoWhen true, also renumber every article in the section to contiguous positions (0, 1, 2, …) so the stored positions stay tidy. Defaults to false, which writes the fewest positions possible and lets gaps remain. Either way the confirmation threshold still applies.
article_idYesArticle ID — the numeric id of the article to move within its section. Obtain it from list_articles or search_articles.
reference_article_idNoThe sibling article to position next to when target is "before" or "after" (numeric id from list_articles). Must belong to the same section and differ from article_id; leave it unset for "top" or "bottom".

TDQS

A4.9/5.0
Behavior5/5

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

Discloses that it writes minimal positions, may reposition neighbors, detects automatic sorting, and requires confirmation for large reorders. This adds context beyond annotations which show idempotent and destructive hints.

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?

Four sentences front-loaded with core action and purpose. Every sentence adds value, 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?

Covers all aspects: reordering behavior, edge cases (automatic sorting), parameter details, return value, and safety mechanism. No output schema but description adequately states return value.

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 has 100% coverage; description adds context like confirm threshold default (20) and that before/after require reference_article_id. Provides additional useful semantics beyond schema.

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 clearly states the tool reorders an article within its current section by moving it relative to siblings, with specific verbs and resource. It distinguishes from update_article for moving to different section.

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 provides when to use: for 'put first/last' requests, and when not: for moving to different section, directing to update_article. Also explains detection of automatic sorting and safety threshold.

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

search_articlesSearch Help Center ArticlesA
Read-onlyIdempotent

Full-text search across Help Center articles (metadata only, no body). Use get_article for full content. Supports locale filtering. Returns total count.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number for offset pagination. Increment it while keeping `per_page` fixed to fetch subsequent pages; page 1 is the first page.
queryYesFull-text query matched against article titles and body. Plain keywords; combine with the locale filter to scope to one language.
localeNoFilter by locale (e.g., "en-us", "fr")
per_pageNoNumber of results per page for offset pagination (1-100). Pair with `page` to walk large result sets; the response header reports the total count and whether more pages remain.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds value by clarifying that only metadata (not body) is returned, and mentions return of 'total count'. 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/5

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

The description is a single, well-structured sentence that front-loads the core purpose. Every element earns its place with no fluff.

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 search tool with 4 parameters and no output schema, the description adequately covers scope (metadata only), return total count, and locale filtering. However, it does not describe the output structure or pagination behavior beyond what the schema covers, leaving some gaps.

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 detailed descriptions for all 4 parameters. The description reinforces that 'query' is full-text and 'locale' filters, but does not add new semantic meaning beyond the schema. 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?

The description clearly states 'Full-text search across Help Center articles (metadata only, no body)' and distinguishes from 'get_article' for full content. It specifies the resource (Help Center articles) and the action (full-text search) with scope constraints.

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 explicitly directs to 'use get_article for full content' if needed, and notes 'Supports locale filtering.' However, it does not differentiate from sibling tools like 'list_articles' or 'search_tickets', missing some context on when to choose this over alternatives.

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

search_ticketsSearch Zendesk TicketsA
Read-onlyIdempotent

Search tickets using Zendesk query syntax, returning each result with its live SLA state (per-metric stage and breach countdown) when an SLA policy applies. Examples: "status:open assignee:me", "priority:urgent ticket_type:incident". Returns total count, so queue triage like "breaching today" works without a per-ticket fetch.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number for offset pagination. Increment it while keeping `per_page` fixed to fetch subsequent pages; page 1 is the first page.
queryYesZendesk ticket search query — field filters like "status:open", "assignee:me", "priority:urgent ticket_type:incident", combined with free text. A "type:ticket" scope is added automatically, so filter the ticket kind with ticket_type: (e.g. ticket_type:incident), never type: (which the API rejects here).
per_pageNoNumber of results per page for offset pagination (1-100). Pair with `page` to walk large result sets; the response header reports the total count and whether more pages remain.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyTrue and idempotentHint. Description adds important behavioral details: returns SLA state per ticket, total count, automatic addition of 'type:ticket' scope, and explains why 'type:' filter is not allowed. These go 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/5

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

Description is two sentences plus an example line. Every sentence adds value: first sentence states purpose and key feature, second gives examples, third explains total count benefit. No wasted words.

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 3 parameters fully described, no output schema, the description covers the return behavior (ticket data, SLA state, total count). It could mention relationship to get_ticket or list_tickets, but is still sufficiently complete for an agent to understand the tool's functionality.

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% with parameter descriptions. Description adds value by providing example queries, explaining the automatic 'type:ticket' addition, and clarifying pagination behavior. This helps the agent understand parameter usage beyond schema alone.

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?

Description states it searches tickets using Zendesk query syntax, distinguishes from list_tickets (which likely returns all tickets) and get_ticket (single ticket). Mentions returning SLA state and total count, which adds specificity.

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?

Provides examples of queries and explains benefit for queue triage. Does not explicitly contrast with sibling search tools, but context is clear enough for an agent to decide when to use this tool.

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

search_usersSearch Zendesk UsersA
Read-onlyIdempotent

Search for users by name, email, or other criteria using Zendesk search query syntax. Returns total count.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number for offset pagination. Increment it while keeping `per_page` fixed to fetch subsequent pages; page 1 is the first page.
queryYesZendesk user search query — free text matched against name and email, and/or field filters like "email:jane@acme.com", "role:agent", "organization_id:123". A "type:user" scope is added automatically.
per_pageNoNumber of results per page for offset pagination (1-100). Pair with `page` to walk large result sets; the response header reports the total count and whether more pages remain.

TDQS

A3.7/5.0
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 description's addition of 'Returns total count' is useful but minimal. It does not disclose details about rate limits, the meaning of openWorldHint, or the behavior of empty queries, but it does highlight the Zendesk query syntax, which informs the 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/5

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

The description is two sentences, front-loading the primary purpose. Every sentence contributes meaningful information: what it searches (users), how (Zendesk query syntax), and what it returns (total count). There is no redundancy or wasted words.

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

Completeness3/5

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

The description is relatively complete given the tool's simplicity and the fact that the schema covers parameters and annotations cover safety. However, it omits that the tool returns a list of user objects (not just a count) and does not mention pagination behavior explicitly, which could be necessary for the agent to estimate page sizes and handle large results.

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 100% schema description coverage, the schema already explains the parameters. The description adds value by clarifying that the query supports free text and field filters, and by stating the return of total count (not in schema). However, it does not elaborate on pagination semantics or the exact response structure, so a 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?

The description clearly states it searches for users by name, email, or other criteria using Zendesk search query syntax. It explicitly identifies the resource (users) and the action (search), distinguishing it from sibling tools like search_tickets (tickets) or search (generic). The mention of returning total count adds concreteness.

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 usage when needing to search for users, but it does not explicitly state when to use this tool versus alternatives like get_user for a single user or the generic search tool for cross-object searches. No exclusions or comparisons are provided, leaving the agent to infer context.

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

set_category_translationCreate or Update a Category TranslationA
DestructiveIdempotent

Create or update the translation of a Help Center category in one locale, and return the resulting translation (locale, localized name, draft state). Creates the translation when the locale has none and updates it otherwise, so no listing call is needed first; only the fields you pass are written, which makes "publish this draft" a single draft: false. Use it to make a category reachable in a locale where its sections or articles are already translated — a gap find_translation_gaps reports and list_categories cannot explain.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoLocalized category name for this locale (sent as the API's translation `title`). Required when the locale has no translation yet; omit on an existing one to leave its name untouched, for instance when only publishing a draft.
draftNoPublication state: false publishes the translation, making the category visible to end users in this locale; true keeps (or puts) it back as a draft. Defaults to false when creating; omit on an existing translation to leave its state unchanged.
localeYesLocale to write, e.g. "fr" or "de". Must be an active locale of the Help Center (zendesk-hc://topology lists them); list_category_translations shows which ones the category already has.
category_idYesCategory ID — the numeric id of the category whose translation to write. Obtain it from list_categories, find_translation_gaps or the zendesk-hc://topology resource.
descriptionNoLocalized category description for this locale (sent as the API's translation `body`). Omit to leave an existing description untouched; pass an empty string to clear it.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=true), the description reveals key upsert semantics ('Creates the translation when the locale has none and updates it otherwise'), partial field updates ('only the fields you pass are written'), and how to publish a draft ('draft: false'). 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.

Conciseness4/5

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

Three sentences, front-loaded with core action in first sentence. The second and third sentences are dense but add critical behavior and usage context. Slightly long but every sentence earns its place.

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 5 parameters, no output schema, and annotations indicating a write/idempotent/destructive operation, the description covers the operation's behavior, return value, and use case. The schema already documents parameter constraints, so the description is complete for selecting and invoking the tool.

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?

Input schema covers 100% of parameters with detailed descriptions (e.g., name requiring when no translation, draft defaults, locale active check). The description adds no additional parameter-level meaning beyond what schema provides, 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?

Description uses specific verb 'Create or update' and identifies resource 'translation of a Help Center category in one locale'. It distinguishes from sibling tools like list_category_translations and find_translation_gaps by explaining the upsert behavior and return value.

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: 'to make a category reachable in a locale where its sections or articles are already translated'. It also mentions that find_translation_gaps reports the gap and list_categories cannot explain, providing context. However, it doesn't explicitly exclude using it for sections or name set_section_translation as alternative, so it's clear but not exhaustive.

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

set_section_translationCreate or Update a Section TranslationA
DestructiveIdempotent

Create or update the translation of a Help Center section in one locale, and return the resulting translation (locale, localized name, draft state). Creates the translation when the locale has none and updates it otherwise, so no listing call is needed first; only the fields you pass are written, which makes "publish this draft" a single draft: false. Use it to make a section reachable in a locale where its articles are already translated — a gap find_translation_gaps reports and list_sections cannot explain.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoLocalized section name for this locale (sent as the API's translation `title`). Required when the locale has no translation yet; omit on an existing one to leave its name untouched, for instance when only publishing a draft.
draftNoPublication state: false publishes the translation, making the section visible to end users in this locale; true keeps (or puts) it back as a draft. Defaults to false when creating; omit on an existing translation to leave its state unchanged.
localeYesLocale to write, e.g. "fr" or "de". Must be an active locale of the Help Center (zendesk-hc://topology lists them); list_section_translations shows which ones the section already has.
section_idYesSection ID — the numeric id of the section whose translation to write. Obtain it from list_sections, find_translation_gaps or the zendesk-hc://topology resource.
descriptionNoLocalized section description for this locale (sent as the API's translation `body`). Omit to leave an existing description untouched; pass an empty string to clear it.

TDQS

A4.9/5.0
Behavior5/5

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

Beyond annotations (readOnly=false, destructive=true, idempotent=true), the description discloses the upsert behavior (creates when absent, updates otherwise), partial-write semantics ('only the fields you pass are written'), and the use of draft:false to publish. It also specifies the return payload (locale, localized name, draft state), which is not already provided by annotations or schema.

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?

The description is three sentences, front-loaded with the primary function, and every sentence delivers distinct value: purpose, operational detail, and use-case context. There is no fluff or repetition.

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 tool with 5 parameters, no output schema, and moderate complexity (upsert plus draft states), the description covers the operation, scope, partial-update behavior, return value, and a concrete use case. It also differentiates from related sibling tools sufficiently.

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 description coverage is 100%, so this is a baseline 3. However, the tool description adds strategic context beyond the schema by explaining how parameters interact, such as 'only the fields you pass are written' and 'publish this draft' being a single draft:false call. This helps agents understand parameter semantics in context, though most details are already in the schema.

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 begins with a specific verb phrase 'Create or update' and clearly identifies the resource: 'the translation of a Help Center section in one locale'. It also distinguishes the tool from siblings by referencing find_translation_gaps and list_sections, clarifying its unique role.

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?

The description provides explicit when-to-use guidance: 'Use it to make a section reachable in a locale where its articles are already translated — a gap find_translation_gaps reports and list_sections cannot explain.' It also states that no listing call is needed first, implying when not to use list_section_translations as a precursor.

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

update_articleUpdate Help Center ArticleA
DestructiveIdempotent

Update article metadata only (draft, promoted, labels, tags, visibility, section, sort position, etc.) and return the updated article. Does NOT update content (title, body) — use update_article_translation for that.

ParametersJSON Schema
NameRequiredDescriptionDefault
draftNoSet true to unpublish the article (revert to draft) or false to publish it.
positionNoSort position within the section (manual ordering only; 0 = first/top). New articles default to position 0. To move an article to the END of its section, set this to one more than the highest current position: read the highest position P from list_articles with sort_by="position", sort_order="desc", then set position = P + 1.
promotedNoSet true to promote (feature) the article in its section, or false to unpromote it.
author_idNoUser id of the article author (from search_users).
article_idYesArticle ID — the numeric id of the article to update. Obtain it from list_articles or search_articles.
section_idNoMove the article to this section (numeric id from list_sections).
label_namesNoLabel names for search ranking (use list_labels to see existing labels).
content_tag_idsNoContent tag ids to attach (use list_content_tags to find them).
user_segment_idNoUser segment that controls who can see the article (id from list_user_segments; if that is forbidden because the token is not a Guide admin, reuse the user_segment_id of an existing article from get_article).
permission_group_idNoGuide permission group controlling who can edit (id from list_permission_groups; if that is forbidden because the token is not a Guide admin, reuse the permission_group_id of an existing article from get_article).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=false, destructiveHint=true, etc. The description adds context that the tool returns the updated article and does NOT update content (title, body). This is helpful but not extensive beyond 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?

Two sentences, front-loaded with the core purpose, and every sentence adds value. 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?

Given the tool's complexity (10 parameters, no output schema), the description is complete enough. It covers the scope, return value, and exclusions, sufficient 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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters well. The description adds very little extra meaning beyond stating the return value. 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?

The description clearly states the verb 'Update' and specifies the resource 'article metadata only'. It distinguishes from the sibling tool update_article_translation by excluding content updates, which removes ambiguity.

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?

The description explicitly states when to use this tool (for metadata updates) and when not to (for content updates, use update_article_translation). This provides clear guidance and alternatives.

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

update_article_sectionUpdate Article SectionA
DestructiveIdempotent

Replace the content of a single section of an article in a given locale, keeping the rest of the body intact. The server fetches the current body, replaces the targeted section, and PUTs the full reconstructed body via the Translations API. Default format="html" for fidelity. Use format="markdown" only when you control the input and know it does not rely on structures that round-trip poorly (code blocks with line breaks, tables with multi-paragraph cells). The section heading is preserved and is NOT part of the replaced content.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoInput format. "html" (default) is the safe path. "markdown" is converted to HTML server-side but may introduce artifacts on complex content.html
localeYesLocale of the translation to update
contentYesNew content for the section (heading excluded). HTML by default, Markdown if format="markdown".
article_idYesArticle ID — the numeric id of the Help Center article. Obtain it from list_articles or search_articles.
section_indexYes0-based index of the section to replace (see get_article_outline)

TDQS

A4.6/5.0
Behavior5/5

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

Discloses that the section heading is preserved and not part of replaced content, the default format choice for fidelity, and the server-side reconstruction. Annotations already indicate destructive and idempotent behavior; description adds valuable context 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/5

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

The description is concise, with no wasted words. It front-loads the main action and includes important details in a logical order. Every sentence contributes value.

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?

Given no output schema, the description adequately covers the tool's behavior and parameter usage. It explains the replacement process and format caveats. A brief note on return values (e.g., updated article) would improve completeness, but the current description is sufficient for an agent.

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 description's parameter details are supplementary. It explains the purpose of section_index (0-based from get_article_outline) and the implications of the format parameter, adding meaning beyond the schema.

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 clearly states the tool's purpose: 'Replace the content of a single section of an article in a given locale, keeping the rest of the body intact.' It specifies the verb, resource, and scope, and distinguishes it from sibling tools like update_article_translation or reorder_article.

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?

Provides explicit guidance on when to use 'html' vs 'markdown' formats, including a warning about round-trip issues. It explains the server-side process. However, it could mention prerequisites like calling get_article_outline to obtain section_index.

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

update_article_translationUpdate Article TranslationA
DestructiveIdempotent

Update article content (title, body) in a specific locale. For targeted edits on one or a few sections, prefer update_article_section — this tool replaces the FULL body and re-sends the entire article on each write. Use the article's source_locale (from get_article) for the default language, or another locale for translations.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoNew full body (HTML) for this locale. Replaces the entire body — for a single-section edit prefer update_article_section. Omit to leave the body unchanged.
draftNoWhen true, keeps this translation as a draft; when false, publishes it.
titleNoNew title for this locale. Omit to leave the current title unchanged.
localeYesLocale of the translation to update, e.g. "en-us" or "fr". Use the source_locale (from get_article) to edit the default language.
article_idYesArticle ID — the numeric id of the article whose translation to update. Obtain it from list_articles or search_articles.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the bar is lowered. The description adds behavioral context by stating that the tool 'replaces the FULL body and re-sends the entire article on each write,' which explains the destructive nature and re-sending behavior beyond what 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/5

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

The description is two sentences long, front-loading the purpose and then providing usage guidance and behavioral notes. Every sentence adds value with no redundancy or unnecessary detail.

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?

Given the tool's complexity, rich annotations, and clear schema, the description covers all necessary context: when to use, what it does, how it differs from siblings, and a key behavior (full body replacement and re-sending). No gaps remain.

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 description coverage is 100%, so the baseline is 3. The description adds value by contextualizing the locale parameter (use source_locale for default language) and contrasting body with the sibling tool, improving semantic understanding beyond the schema.

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 clearly states the tool updates article content (title, body) in a specific locale. It distinguishes itself from the sibling tool 'update_article_section' by specifying that this tool replaces the full body, making the purpose highly specific and unambiguous.

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?

The description explicitly advises when to use alternatives: 'For targeted edits on one or a few sections, prefer update_article_section.' It also explains how to handle the default language using source_locale, providing clear context for correct invocation.

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

update_ticketUpdate Zendesk TicketA
DestructiveIdempotent

Update an existing ticket (status, priority, type, assignee, group, subject, tags, custom fields). Only the fields you pass are changed, and the updated ticket is returned. Setting tags here replaces the whole tag set — use manage_tags to add or remove individual tags without overwriting the rest. This tool does not post replies: use add_public_comment or add_private_note for that. Find the ticket id via search_tickets or list_tickets.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoReplaces the full tag set on the ticket. Use manage_tags for incremental add/remove.
typeNoTicket type. One of problem, incident, question, task.
statusNoNew ticket status. One of new, open, pending, hold, solved, closed.
subjectNoNew subject line for the ticket; replaces the current subject when provided.
group_idNoId of the group to assign the ticket to.
priorityNoTicket priority. One of urgent, high, normal, low.
ticket_idYesTicket ID — the numeric id of the ticket to update. Obtain it from search_tickets or list_tickets.
assignee_idNoUser id of the agent to assign the ticket to.
custom_fieldsNoCustom field values as { id, value } pairs (field ids come from your Zendesk admin settings). Call list_ticket_fields first to discover the numeric field ids and, for dropdown/multiselect fields, the exact option values Zendesk accepts.

TDQS

A4.7/5.0
Behavior4/5

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

The description discloses that only passed fields are changed, tags replace the whole set, and the tool does not post replies. Annotations (destructiveHint, idempotentHint) are consistent, and the description adds useful behavioral context 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/5

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

The description is concise with three well-structured sentences. It front-loads the key information (what the tool does and its parameters) and efficiently adds usage guidelines and behavioral notes without redundancy.

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?

Despite 9 parameters and no output schema, the description covers essential aspects: partial update behavior, tag replacement, no replies, and how to find the ticket_id. It provides enough context for an agent to use the tool effectively.

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. The description adds value by explaining that setting tags replaces the entire set (reinforcing the schema), that only specified fields are changed, and that the updated ticket is returned. It also provides guidance on how to obtain the ticket_id, which aids in parameter selection.

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 explicitly states 'Update an existing ticket' and lists the fields that can be updated (status, priority, type, etc.). It distinguishes the tool from siblings like add_public_comment, add_private_note, and manage_tags, making the purpose clear and specific.

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?

The description provides clear guidance on when to use alternatives: 'use manage_tags to add or remove individual tags' and 'use add_public_comment or add_private_note for replies'. It also explains how to obtain the ticket_id via search_tickets or list_tickets, helping the agent decide when to invoke this tool.

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

TDQS

A3.9/5.0
Disambiguation4/5

The tool set is large but each tool has a highly detailed description that clarifies its distinct purpose. However, the generic 'search' overlaps with search_tickets/search_users/search_articles, and the many translation-related tools could be confused without careful reading.

Naming Consistency5/5

Tool names consistently follow a verb_noun pattern with clear verbs (get, list, create, update, add, manage, preview, find, set, reorder, archive, compare) and specific nouns (ticket, article, section, translation, tag, attachment). Compound names like preview_macro_diff and find_translation_gaps still adhere to the pattern.

Tool Count1/5

With 52 tools, the server is extremely large and exceeds the threshold for a well-scoped MCP server. Even though it covers both Support and Guide domains, the sheer number makes tool selection difficult and the surface area unwieldy.

Completeness3/5

Ticket management is thoroughly covered (CRUD, comments, tags, SLA, views, macros, history), and Guide article management is also extensive. However, there are notable gaps: no create/update for sections or categories, only list; no delete for many resources; no update for content tags. The surface is broad but not fully complete.

Maintenance

ActivityActive
ResponsivenessSlow

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A server implementation that provides Claude AI with the ability to interact with Zendesk ticketing systems through various functions including retrieving, searching, creating, and updating tickets.
    7
    286
    16
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI-powered ticket analysis and comprehensive Zendesk API integration via the Model Context Protocol, supporting both API token (CLI) and OAuth 2.1 (web) authentication modes.
    55
    142
    5
    MIT

Latest Blog Posts

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/fruggr/zendesk-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server