Zendesk MCP Server
Provides access to Zendesk API for managing tickets, users, organizations, automation, help center articles, and search, with AI-powered ticket analysis.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Zendesk MCP Serverlist tickets assigned to me"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Zendesk MCP Server
A Model Context Protocol server for Zendesk API integration with AI-powered ticket analysis
Quick Start • Configuration • Tools • Architecture • Development
Overview
Zendesk MCP Server provides comprehensive access to the Zendesk API through the Model Context Protocol. It supports two transport modes that are auto-detected from environment variables:
Stdio mode — API token auth, for CLI-based MCP clients (Claude Code, Cursor, etc.)
HTTP mode — OAuth 2.1 with PKCE, for web-based MCP clients
Both modes expose the same set of tools. No code changes are needed to switch between them.
Based on mattcoatsworth/zendesk-mcp-server with significant enhancements including AI-powered features, dual-mode authentication, improved error handling, and comprehensive retry logic.
Related MCP server: mcp-server-zendesk
Quick Start
Stdio Mode (API Token)
Best for CLI-based MCP clients like Claude Code or Cursor. Each user only needs their own email + API token.
1. Get your API token from Zendesk Admin Center → Apps and integrations → APIs → Zendesk API → Add API token.
2. Configure your MCP client:
{
"zendesk": {
"type": "stdio",
"command": "npx",
"args": ["@sshadows/zendesk-mcp-server"],
"env": {
"ZENDESK_SUBDOMAIN": "your-subdomain",
"ZENDESK_EMAIL": "you@example.com",
"ZENDESK_API_TOKEN": "your-api-token"
}
}
}That's it. The server auto-detects stdio mode and connects.
HTTP Mode (OAuth 2.1)
Best for web-based MCP clients or multi-user deployments with centralized OAuth.
1. Create an OAuth app in Zendesk Admin Center → Apps and integrations → APIs → OAuth Clients.
2. Create a .env file:
ZENDESK_SUBDOMAIN=your-subdomain
ZENDESK_OAUTH_CLIENT_ID=your_client_id
ZENDESK_OAUTH_CLIENT_SECRET=your_client_secret
ZENDESK_OAUTH_REDIRECT_URI=http://localhost:3030/zendesk/oauth/callback3. Start and authorize:
npm start
# Visit http://localhost:3030/oauth/authorize in your browser4. Use the token with your MCP client: Authorization: Bearer mcp_...
Installation
Requirement | Version | Notes |
Node.js | >= 18.0.0 | Required |
Zendesk Account | Any plan | Required |
Anthropic API Key | - | Only for AI analysis features |
# npm (recommended)
npm install -g @sshadows/zendesk-mcp-server
# Or from source
git clone https://github.com/SShadowS/zendesk-mcp-server.git
cd zendesk-mcp-server
npm installConfiguration
Environment Variables
The server auto-detects which mode to use based on which variables are set.
Stdio mode (set ZENDESK_EMAIL + ZENDESK_API_TOKEN, without ZENDESK_OAUTH_CLIENT_ID):
ZENDESK_SUBDOMAIN=mycompany
ZENDESK_EMAIL=user@example.com
ZENDESK_API_TOKEN=your-api-tokenHTTP mode (set ZENDESK_OAUTH_CLIENT_ID):
ZENDESK_SUBDOMAIN=mycompany
ZENDESK_OAUTH_CLIENT_ID=your_client_id
ZENDESK_OAUTH_CLIENT_SECRET=your_client_secret
ZENDESK_OAUTH_REDIRECT_URI=http://localhost:3030/zendesk/oauth/callbackCommon (both modes):
MODE=full # 'full' (all 55 tools) or 'lite' (10 essential tools)
ANTHROPIC_API_KEY=sk-ant-... # Required for AI image/document analysis
ZENDESK_DEBUG=false # Enable debug loggingHTTP mode only:
PORT=3030
SERVER_BASE_URL=http://localhost:3030 # Use https:// in productionSee .env.example for the full list.
Tool Modes
Control which tools are exposed with the MODE environment variable:
full(default) — All 55 tools available.lite— 10 essential tools for reduced context usage:search,get_user,list_tickets,get_ticket,get_ticket_comments,add_ticket_comment,get_ticket_attachments,analyze_ticket_images,analyze_ticket_documents,get_document_summary.
MODE=lite npm startAvailable Tools
Tool | Description |
| List tickets with filters (status, assignee, etc.) |
| Get ticket details with optional comments |
| Create a new ticket |
| Update ticket fields |
| Get all comments on a ticket |
| Add public or internal comment |
| Get ticket attachments |
| AI-powered image analysis with Claude Vision |
| AI-powered document analysis |
| Quick document summary |
Tool | Description |
| List all users |
| Get user details |
| Create new user |
| Update user info |
| Delete a user |
Tool | Description |
| List all organizations |
| Get organization details |
| Create new organization |
| Update organization |
| Delete organization |
Category | Tools |
Groups |
|
Macros |
|
Views |
|
Triggers |
|
Automations |
|
Category | Tools |
Search |
|
Help Center |
|
Talk |
|
Chat |
|
Architecture
Transport Modes
src/index.js (auto-detection)
├── ZENDESK_EMAIL + ZENDESK_API_TOKEN → Stdio mode
│ ├── ZendeskClient.setApiTokenAuth()
│ ├── setDefaultZendeskClient(client)
│ └── StdioServerTransport (stdin/stdout)
│
└── ZENDESK_OAUTH_CLIENT_ID → HTTP mode
├── Express server (src/http-server.js)
├── OAuth 2.1 with PKCE (src/auth/)
├── Per-session ZendeskClient instances
└── StreamableHTTPServerTransportTools are identical in both modes. They call getZendeskClient() which resolves to:
HTTP mode: Per-session client via AsyncLocalStorage
Stdio mode: Singleton default client
Project Structure
zendesk-mcp-server/
├── src/
│ ├── index.js # Entry point (auto-detects mode)
│ ├── http-server.js # Express server with OAuth (HTTP mode only)
│ ├── server.js # MCP server setup and tool registration
│ ├── request-context.js # Per-session + default client context
│ ├── auth/
│ │ ├── oauth-handler.js # OAuth 2.1 with PKCE
│ │ ├── session-store.js # Session management
│ │ └── middleware.js # Bearer token auth middleware
│ ├── zendesk-client/
│ │ ├── base.js # Auth, HTTP requests, retry logic
│ │ ├── index.js # Mixin composition
│ │ ├── tickets.js # Ticket API methods
│ │ ├── users.js # User API methods
│ │ └── ... # Other API domain mixins
│ ├── tools/ # MCP tool implementations
│ ├── config/
│ │ └── tool-modes.js # Full/lite mode filtering
│ └── utils/
│ ├── errors.js # Classified error types
│ ├── retry.js # Exponential backoff
│ ├── ticket-context.js # AI prompt context builder
│ ├── document-handler.js # Document routing
│ └── converter-client.js # Office-to-PDF conversion
├── tests/ # Vitest test suite
├── .env.example # Environment variable template
└── CLAUDE.md # AI assistant project guideKey Design Decisions
Dual auth in one client:
ZendeskClientBasesupports bothsetApiTokenAuth()(Basic) andsetAccessToken()(Bearer). The_authModefield determines which headergetAuthHeader()returns.Default client fallback: AsyncLocalStorage doesn't propagate through StdioServerTransport's event callbacks. Instead of fighting that,
getZendeskClient()falls back to a module-level default client in stdio mode. Zero changes needed in any tool file.Console.error everywhere: In stdio mode, stdout is the MCP transport. All diagnostic logging in shared code paths uses
console.error.HTTP mode is unchanged:
src/http-server.jsandsrc/auth/*are only imported in HTTP mode. No changes were needed.
Development
npm start # Start server (auto-detects mode)
npm run dev # Start with auto-reload
npm test # Run all tests
npm run test:watch # Run tests in watch mode
npm run inspect # Launch MCP InspectorTesting
Tests use Vitest and are in tests/ mirroring the src/ directory:
npm test # Run all tests
npm run test:watch # Watch modeIntegration tests (against real Zendesk + Anthropic APIs) require .env credentials and are automatically skipped when credentials are missing.
HTTP Mode Endpoints
Endpoint | Description |
| Main MCP endpoint (requires Bearer token) |
| Start OAuth flow |
| OAuth callback |
| Token exchange |
| Dynamic client registration (RFC 7591) |
| OAuth metadata (RFC 8414) |
| Protected resource metadata (RFC 9728) |
| Health check |
Troubleshooting
The server needs either API token or OAuth credentials. Set one of:
# Stdio mode
ZENDESK_SUBDOMAIN=... ZENDESK_EMAIL=... ZENDESK_API_TOKEN=...
# HTTP mode
ZENDESK_SUBDOMAIN=... ZENDESK_OAUTH_CLIENT_ID=... ZENDESK_OAUTH_CLIENT_SECRET=...Complete OAuth flow: visit
http://localhost:3030/oauth/authorizeCheck if token expired (24-hour TTL) — re-authorize if needed
Ensure Bearer token is included:
Authorization: Bearer mcp_xxxToken format should start with
mcp_
Verify
ZENDESK_EMAILis correctVerify
ZENDESK_API_TOKENis a valid API token (not a password)Verify
ZENDESK_SUBDOMAINis correctCheck the connection test output in stderr on startup
In-memory sessions are cleared on restart. Re-authorize to get a new token. For production, implement a Redis-based session store (see src/auth/session-store.js).
Set ANTHROPIC_API_KEY in your environment. This is only needed for analyze_ticket_images, analyze_ticket_documents, and get_document_summary.
The server includes exponential backoff retry logic. If you hit rate limits frequently, consider using MODE=lite to reduce API calls, or check if multiple clients share the same credentials.
Contributing
Fork the repository
Create your feature branch (
git checkout -b feature/my-feature)Run tests (
npm test)Commit your changes
Open a Pull Request
License
MIT License — see LICENSE for details.
Acknowledgments
Original implementation by @mattcoatsworth
Built with Model Context Protocol
AI features powered by Anthropic Claude
Made with care by SShadowS
Available Tools
55 toolsadd_ticket_commentA
Append a comment to an existing ticket. Default visibility is internal (agent-only note) — pass type:'public' to send a reply visible to the requester. Use this rather than update_ticket when you only want to add a comment without changing other ticket fields.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Ticket ID | |
| body | Yes | Comment body | |
| type | No | Comment type: 'public' (visible to end users) or 'internal' (agents only). Default: 'internal' | |
| author_id | No | Author ID (defaults to current user) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses default visibility and how to change it. No annotations provided, so description carries the burden. It doesn't mention return value or error conditions, but for a simple append, it's sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states action, second gives key usage nuance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a 4-parameter tool with no output schema. Covers required behavior, parameter defaults, and usage context. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds context: explains default for type parameter and how to make a public comment. Adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Append a comment to an existing ticket.' It also distinguishes from sibling tool update_ticket by specifying when to use this tool instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance on when to use (adding a comment without changing other fields) and how to use (default internal, pass type:'public' for requester-visible reply). Mentions alternative tool by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_ticket_documentsA
Comprehensively analyze all document attachments from a ticket (PDF, DOCX, TXT, CSV, etc.) using AI. Long documents are truncated to fit the analysis budget. Note: this may take 30-60 seconds for multiple documents.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Ticket ID | |
| max_tokens | No | Maximum tokens for response (default: 8192, max: 16000) | |
| quick_mode | No | Quick mode: analyze only first 3 documents (default: false) | |
| document_types | No | Filter specific document types to analyze | |
| include_images | No | Also analyze image attachments (default: true) | |
| analysis_prompt | No | Custom prompt for document analysis |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses truncation and estimated time (30-60 seconds), which are useful behavioral traits. However, it lacks details on output format, error handling, or authentication needs, relying on the schema for parameter descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two sentences and a note. It front-loads the core purpose and adds relevant details (truncation, time) without redundancy. Minor improvement could integrate the note more smoothly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and no annotations, the description omits critical information such as the output format (e.g., summary, key points) and how analysis is returned per document. It is insufficient for an AI to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have schema descriptions (100% coverage), so baseline is 3. The tool description does not add additional meaning beyond what the schema provides; parameters like 'quick_mode' and 'include_images' are already explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes document attachments from a ticket using AI, listing supported formats. It distinguishes from sibling 'analyze_ticket_images' by focusing on documents, with optional image analysis via parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for document analysis and mentions truncation and time delay, but does not specify when not to use or provide alternatives. It hints at limitations for long documents but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_ticket_imagesA
Download and analyze images from a ticket using AI vision with comprehensive analysis. Includes both file attachments and inline images embedded in comment bodies. Optionally scope to a single comment/post via comment_id, or to specific images via attachment_ids (discover ids with get_ticket_attachments).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Ticket ID | |
| comment_id | No | Only analyze images from this comment/post. Get IDs via get_ticket_comments or get_ticket_attachments. | |
| max_tokens | No | Maximum tokens for response (default: 8192, max: 16000) | |
| attachment_ids | No | Only analyze these specific image ids. File attachment ids are numbers; inline image ids look like 'inline_<commentId>_<index>'. Discover ids via get_ticket_attachments. | |
| include_inline | No | Include inline images from comment HTML bodies (default: true) | |
| analysis_prompt | No | Custom analysis prompt (default: general image description) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It mentions downloading and analyzing images, including inline images, but does not disclose permissions, rate limits, or confirm it is non-destructive. The behavior is implied but 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core purpose and then detailing scoping options. Every sentence adds necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no output schema or annotations, the description covers the main functionality, scoping, and ID discovery. It does not describe the return value format, but 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter. The description adds value beyond the schema by explaining the scoping relationship (e.g., 'discover ids with get_ticket_attachments') and the distinction between file attachment and inline image IDs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'downloads and analyzes images from a ticket using AI vision,' with a specific verb and resource. It distinguishes itself from sibling tools like 'get_ticket_attachments' and 'analyze_ticket_documents' by focusing on image analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool and offers scoping options via comment_id and attachment_ids, including how to discover IDs. It does not explicitly state when not to use it, but the guidance is sufficient for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_articleB
Create a Help Center article in a specific section. Body accepts HTML. Specify locale if you support multiple languages (defaults to instance default).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Article body content (HTML) | |
| draft | No | Whether the article is a draft | |
| title | Yes | Article title | |
| locale | No | Article locale (e.g., 'en-us') | |
| section_id | Yes | Section ID where the article will be created | |
| label_names | No | Labels for the article | |
| user_segment_id | No | User segment ID for the article | |
| permission_group_id | No | Permission group ID for the article |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that body accepts HTML and locale defaults, but lacks information on permissions, idempotency, error behavior, or side effects. Without annotations, this is insufficient for an 8-parameter tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted words. Efficiently communicates key usage details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite good schema coverage, the description omits expected return value and fails to address the complexity of 8 parameters. For a creation tool, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds that locale defaults to instance default and body accepts HTML, which is helpful but minimal beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates a Help Center article in a specific section, which distinguishes it from sibling tools like create_ticket or update_article. The resource ('Help Center article') and verb ('create') are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for article creation but does not explicitly contrast with alternatives like update_article or list_articles. It provides context about locale and HTML body but no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_automationA
Create a new automation (runs hourly on tickets matching the conditions). Requires title, conditions, and actions. Conditions should include a time-based field (e.g. hours_since_update) — otherwise consider a trigger instead.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Automation title | |
| actions | Yes | Actions to perform when automation conditions are met | |
| conditions | Yes | Conditions for the automation | |
| description | No | Automation description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behaviors. It mentions the automation runs hourly, which is useful, but does not describe other behavioral traits such as permission requirements, whether it activates immediately, or error handling for invalid conditions. The guidance on time-based fields adds some transparency, but more details are needed for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no wasted words. The first sentence covers purpose and scheduling, the second gives requirements and a helpful tip. Information is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, nested objects, and no output schema, the description covers the key aspects: purpose, usage condition, and parameter hints. It lacks detail on the return value or what happens after creation, but for an automation creation tool, the information provided is largely sufficient for an AI agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by emphasizing that conditions require a time-based field and that title, conditions, and actions are all required. This goes beyond the schema's parameter descriptions to clarify semantics and proper usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'create' and resource 'automation', and specifies that it runs hourly on matching tickets. This distinguishes it from sibling tools like create_trigger (event-based) and create_macro (manual execution).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states required parameters (title, conditions, actions) and provides a key rule: conditions should include a time-based field; otherwise consider using a trigger instead. This gives 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.
create_groupA
Create a new agent group. Group members are added separately via Zendesk's group_memberships endpoint (not exposed by this tool).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Group name | |
| description | No | Group description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It discloses that group members are not added by this tool, but does not cover permissions, idempotency, or error behavior. Basic transparency is present but could be enhanced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that are direct and front-loaded. No unnecessary words; each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create tool with 2 parameters and no output schema, the description covers the essential action and clarifies a key limitation (members). It could mention creation behavior (e.g., immediate or async) but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions for 'name' and 'description'. The description adds no additional parameter-specific guidance beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Create a new agent group' with a specific verb and resource, distinguishing it from sibling tools like create_organization or create_user. The additional note about group memberships further clarifies its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the purpose and includes a crucial note that group members must be added separately via a different endpoint, which guides the agent on what this tool does not do. No alternative tools mentioned, but the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_macroB
Create a new macro. Provide title and an actions array. Each action is {field, value} describing what the macro changes when applied.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Macro title | |
| actions | Yes | Actions to perform when macro is applied | |
| description | No | Macro description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains the macro's effect (changes fields/values) but does not disclose permissions, destructive potential, or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded purpose, no unnecessary words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the input adequately but does not mention the output or return value. Since there is no output schema, this is a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds clarity by explaining that actions are applied when the macro runs, providing context beyond the schema field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new macro and mentions key parameters. However, it does not differentiate from sibling tools like update_macro or create_automation, which would enhance clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It only states what the tool does, not the context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_organizationA
Create a new organization. Name must be unique within the instance. Use domain_names (array) to auto-associate end-users whose email domain matches.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Organization name | |
| tags | No | Tags for the organization | |
| notes | No | Notes about the organization | |
| details | No | Details about the organization | |
| domain_names | No | Domain names for the organization |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses uniqueness constraint and domain auto-association, but with no annotations, misses behavioral details like auth requirements, idempotency, or what happens on duplicate name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences convey purpose, constraint, and a key feature with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main points for a create tool with 5 parameters (1 required). Missing details on error handling and return format, but overall sufficient given simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds context for domain_names but no additional semantics for other parameters beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action 'Create a new organization' and adds specific constraints like unique name and domain association, distinguishing it from sibling update and delete tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides implicit usage guidance through unique name constraint and domain_names feature, but lacks explicit when-to-use vs alternatives or when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ticketC
Create a new ticket. Supports named_custom_fields (e.g. ado_work_item_id) and raw custom_fields.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags for the ticket | |
| type | No | Ticket type | |
| status | No | Ticket status | |
| comment | Yes | Ticket comment/description | |
| subject | Yes | Ticket subject | |
| group_id | No | Group ID for the ticket | |
| priority | No | Ticket priority | |
| assignee_id | No | User ID of the assignee | |
| requester_id | No | User ID of the requester | |
| custom_fields | No | Raw Zendesk custom_fields entries ({id, value}). Escape hatch for fields not in the named map. | |
| named_custom_fields | No | Named custom fields. Keys map to Zendesk custom field ids via src/config/custom-fields.js. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only mentions support for named_custom_fields and raw custom_fields, but lacks details on side effects, permissions, or expected behavior beyond creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences. It front-loads the main action and avoids extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, no output schema), the description is too brief. It does not explain what the tool returns, required fields beyond the schema, or any constraints, leaving the agent insufficiently informed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are documented. The description adds marginal value by noting that custom_fields is an escape hatch and mentioning the ado_work_item_id example, but does not significantly extend understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new ticket,' indicating the verb and resource. It does not explicitly differentiate from sibling tools like update_ticket, but the name and context make the purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention use cases, prerequisites, or when to avoid using it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_triggerB
Create a new trigger. Requires title, conditions (when it fires), and actions (what it does). Triggers run on every ticket create/update — be conservative with conditions to avoid performance impact.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Trigger title | |
| actions | Yes | Actions to perform when trigger conditions are met | |
| conditions | Yes | Conditions for the trigger | |
| description | No | Trigger description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full burden. Discloses that triggers run on every ticket create/update and warns about performance, but lacks details on execution model, error handling, limits, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and requirements, no superfluous words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with nested objects and no output schema, description is too brief. Missing information on validation, defaults, or differentiation from triggers vs automations. Does not cover return behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds little beyond restating requirements. The performance warning about conditions adds some value, but does not elaborate on parameter formats or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Create' and resource 'trigger', and specifies required components (title, conditions, actions). Distinguishes from siblings like update_trigger and list_triggers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context that triggers run on every ticket create/update, with a performance warning. However, does not explicitly differentiate from similar tools like create_automation or give criteria for choosing between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_userA
Create a new Zendesk user. Email must be unique across the instance — duplicates return 422. Role defaults to end-user; specify agent or admin for staff accounts. Returns the created user's full profile including the auto-assigned ID.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | User's full name | |
| role | No | User's role | |
| tags | No | Tags for the user | |
| Yes | User's email address | ||
| notes | No | Notes about the user | |
| phone | No | User's phone number | |
| organization_id | No | ID of the user's organization |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the 422 error for duplicate emails, role defaults, and return value. However, it does not mention side effects, permission requirements, or rate limits. It adds moderate behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no filler. Every sentence adds essential information: creation, constraint, default role, return. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, no output schema, and no annotations, the description covers key aspects: creation, uniqueness, role options, return value. It could mention required fields (name, email) but these are in schema. Nearly complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 7 parameters. The description adds extra semantics: email uniqueness constraint and role default. This goes beyond the schema's enum listing, providing meaningful context for agent decision-making.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the precise verb 'Create' and resource 'Zendesk user', and includes specific details about email uniqueness, role defaults, and return value. It clearly distinguishes this tool from siblings like 'update_user' or 'delete_user'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions email must be unique and role defaults to end-user, providing context for when to use. It lacks explicit alternatives or when-not-to-use, but the creation purpose is clear. A 4 is appropriate for providing clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_viewA
Create a new ticket view. Pass conditions as an object with optional all and any arrays (Zendesk evaluates all as AND-logic, any as OR-logic). Each condition is {field, operator, value} per Zendesk's view conditions schema. Use output to control which columns appear, plus grouping and sort.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | View title | |
| output | No | Columns, grouping, and sort order for view results. | |
| conditions | Yes | Conditions for the view | |
| description | No | View description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It explains the logical behavior of conditions (AND/OR) and output structure, but does not disclose side effects, permissions, or idempotency. It adds some value but lacks critical behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that front-load the purpose and then immediately explain the key parameter structure. Every sentence is necessary and efficient; no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (nested objects, 4 parameters, no output schema), the description covers conditions and output structure reasonably but omits details like valid field/operator values or return value. Could be more complete, but schema partially compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but schema descriptions are minimal (field, operator, value, etc.). The description adds meaning by explaining the 'all' and 'any' arrays as AND/OR logic and detailing the output object with columns, grouping, and sort. This is valuable beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new ticket view', which is a specific verb+resource. It also explains the conditions structure and output options, distinguishing it from other create tools like create_automation or create_ticket.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like update_view or list_views. The description does not mention prerequisites or cases where a user should prefer a different tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_articleA
Delete a Help Center article. Soft-deletable — Zendesk retains the record briefly for undo. Existing links to the article will 404.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Article ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility. It discloses important behaviors: soft-deletable (Zendesk retains record briefly for undo) and that existing links will 404. This adds value beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, no wasted words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers key behaviors (soft-delete, link 404) and the single parameter is explained in the schema. For a simple delete operation with no output schema, this is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'id'. The description does not add additional meaning beyond the schema's description, so it meets the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Delete), the resource (Help Center article), and distinguishes from sibling delete tools by specifying 'article'. It also provides additional context about soft-deletability and link behavior, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use this tool (to delete an article) but does not explicitly mention alternatives or when not to use it. The context is clear, but no exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_automationA
Delete an automation. Tickets previously modified by it are unaffected.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Automation ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that tickets previously modified are unaffected, which is a key behavioral trait for a delete operation. However, it does not mention permission requirements or irreversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of just two sentences. Every word adds value, with no extraneous information. It is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with one parameter and no output schema, the description is adequate. It addresses the main concern of side effects (tickets unaffected). Could be slightly improved by mentioning permanence or undo, but not necessary for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers the one parameter (id) with a description. The tool description adds no additional semantic information beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete an automation' which is a specific verb and resource. It also adds a unique behavioral note about tickets being unaffected, distinguishing it from other delete tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you want to delete an automation but does not provide explicit guidance on when to use this tool versus alternatives like delete_trigger or delete_macro. No exclusions or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_groupA
Delete an agent group. Tickets currently assigned to this group will be unassigned (group_id set to null).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Group ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the full burden. It discloses that tickets become unassigned, which is a crucial side effect. However, it does not mention other behavioral aspects like irreversibility, required permissions, or deletion of related data (e.g., group settings).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundant words. The critical information (action, resource, side effect) is front-loaded. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single parameter, no output schema, no nested objects), the description covers the main behavioral effect (unassignment). It is complete for typical agent use, though it could mention that the deletion is permanent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (one parameter with a description). The tool description does not add information beyond the schema's 'Group ID to delete'. The schema already handles parameter meaning adequately, so the description contributes no extra value for this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Delete an agent group') and specifies the primary resource, distinguishing it from other delete tools (e.g., delete_article) and group-related tools (create_group, update_group). It also mentions a key side effect (ticket unassignment), adding specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when deletion is desired) but does not explicitly state when not to use it or suggest alternatives (e.g., updating group status or archiving instead). No guidance on prerequisites or context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_macroA
Delete a macro. Tickets previously modified by it are unaffected.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Macro ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that tickets previously modified by the macro are unaffected, providing important behavioral context beyond the deletion action. No annotations provided, so description carries full burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, concise and front-loaded with the action, followed by a critical behavioral note. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with one parameter and no output schema, the description covers the action and its side effects completely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the parameter 'id' is described in the schema. Description adds no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Delete a macro' with specific verb and resource, and adds a crucial behavioral note about tickets being unaffected, clearly distinguishing it from other delete tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for deleting a macro, but no explicit guidance on when to use versus alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_organizationA
Delete an organization. Associated users are not deleted but are unlinked from the org.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Organization ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that users are not deleted but unlinked, which is a key behavioral trait. However, with no annotations, the description fails to cover other behaviors like reversibility, error cases, or authorization needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences delivering purpose and a critical side effect with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple delete tool with one parameter, but lacks information on return values, error handling, or whether the delete is irreversible.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters, describing 'id' as 'Organization ID to delete'. The description adds no further detail about the parameter type, format, or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it deletes an organization, distinguishing it from create/get/update siblings. The added detail about users being unlinked is a specific verb+resource statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs others (e.g., delete_user). Missing prerequisites like ownership or conditions for deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_ticketB
Delete a ticket
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Ticket ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No description of behavioral traits beyond the action. For a destructive operation, details on irreversibility, permissions, or side effects are missing. No annotations are provided to compensate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (three words) with no unnecessary information. For a simple delete tool, this minimal structure is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description is minimally adequate. However, it lacks context on return values or success/failure indicators.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the parameter description is adequate. The description adds no extra meaning beyond the schema, but the baseline for high coverage is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete a ticket', providing a specific verb and resource. It distinguishes from siblings like create, update, and read operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. While the purpose is clear, there is no discussion of prerequisites, consequences, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_triggerA
Delete a trigger. Tickets previously modified by it are unaffected.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Trigger ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that tickets previously modified by the trigger are unaffected, which is a relevant behavioral trait. With no annotations, this adds value. Missing details on reversibility or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no wasted words. Every sentence serves a clear purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with one parameter and no output schema, the description is nearly complete. It provides the core action and a key behavioral note, but could mention permissions or permanence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with 'Trigger ID to delete' for the id parameter. The description adds no further meaning beyond the schema, so baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete a trigger.' which is a specific verb and resource. It distinguishes from sibling tools like delete_article or delete_automation by targeting triggers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., update_trigger or other delete tools). Lacks context about prerequisites or excluded scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_userA
Soft-delete a Zendesk user (sets active:false; the record is retained for ticket history). To permanently purge, use Zendesk's GDPR delete endpoint (not exposed by this tool). Cannot delete the account owner.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | User ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the soft-delete behavior (retains record for ticket history) and the active:false flag. No annotations provided, but description fully covers behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each providing essential information without redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers all necessary context: what it does, limitations, and usage alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter 'id' with 100% schema description coverage. Description adds no extra meaning beyond 'User ID to delete', which is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it soft-deletes a Zendesk user by setting active:false, distinguishes from permanent deletion, and notes the restriction on account owner.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (soft-delete) and when not (use GDPR endpoint for permanent purge), and identifies a specific constraint (cannot delete account owner).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_viewA
Delete a saved view. Tickets are unaffected.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | View ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description discloses a key behavioral trait: tickets are unaffected by view deletion. This is sufficient for a simple deletion tool, but could mention if deletion is irreversible or requires permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no redundant text. Every word adds value, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is adequately complete, covering purpose and the critical behavioral note about tickets. Could be enhanced with permission or reversibility details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description merely repeats the schema's parameter description ('View ID to delete'), adding no new semantic meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a saved view and explicitly notes that tickets are unaffected, distinguishing it from sibling delete tools like delete_ticket.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (to delete a view without affecting tickets) and indirectly guides away from alternatives, but lacks explicit when-not or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_articleA
Fetch one Help Center article by numeric ID, returning title, body (HTML), section_id, labels, and locale.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Article ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states the return fields but does not mention error handling (e.g., if ID not found), authorization requirements, or rate limits. It is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. Every word adds value, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (one parameter, no output schema), the description adequately covers the return values. It could be improved by noting that the article must exist, but it is generally complete for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with one required parameter 'id' described in the schema. The description does not add extra meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Fetch one Help Center article'), the input (numeric ID), and the fields returned (title, body HTML, section_id, labels, locale). It is specific and distinguishes from sibling tools like list_articles or create_article.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. While the purpose is clear, the description does not mention alternatives or context for choosing this tool over search or other retrieval methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_automationA
Fetch one automation's definition by numeric ID, including its conditions and actions array.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Automation ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description states it fetches definition including conditions and actions, but does not disclose side effects, auth requirements, rate limits, or if it's read-only. Adequate but could add more behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no waste, front-loaded with key information. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should explain return values. It mentions 'including its conditions and actions array', which helps. However, more detail on the full response structure would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter 'id' described as 'Automation ID'. Description adds no extra meaning beyond schema; it only reiterates 'numeric ID'. Baseline 3 is appropriate as schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it fetches one automation's definition by numeric ID, including conditions and actions. Verb 'Fetch' is specific to the resource 'automation's definition'. Distinguishes from siblings like list_automations (list) and other get_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use. No alternatives mentioned. The description implies usage for fetching a single automation by ID, but lacks guidance on when to prefer this over list_automations or other get tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_summaryB
Get a quick summary of all documents attached to a ticket
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Ticket ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must bear full burden. It only says 'quick summary', omitting key behavioral traits like read-only nature, authentication needs, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff, directly states purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema, description covers purpose but lacks details on return format or what the summary includes. Adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter described as 'Ticket ID'. Description adds no extra meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ('Get') and resource ('summary of all documents attached to a ticket'), clearly differentiating from sibling tools like analyze_ticket_documents or get_ticket_attachments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, nor any exclusion criteria or prerequisites provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_groupA
Fetch one agent group by numeric ID, returning name, description, and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description accurately indicates a read operation via 'Fetch'. Does not mention auth or side effects, which is acceptable for a simple read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, no superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately describes the tool's purpose and return values for a simple fetch. No output schema needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with description 'Group ID'. Description adds 'numeric ID' which is already implied by the type 'number'. Little additional value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Fetch', resource 'one agent group', method 'by numeric ID', and return fields 'name, description, and metadata'. Distinct from sibling tools like list_groups or update_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly clear when to use (fetch a single group by ID), but no explicit exclusions or alternatives stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_macroA
Fetch one macro's definition by numeric ID, including the title and the array of actions it performs (status change, comment, tag adds, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Macro ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it specifies the tool is a fetch operation and outline the return data (title, actions). It does not detail error cases or permissions, but for a simple read operation the disclosure is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence with all essential information front-loaded. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter fetch with no output schema, the description sufficiently explains the purpose, input, and output. It does not include examples or error conditions, but the complexity is low enough that this is near-complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for 'id'. The tool description adds value by explaining what the returned data includes, going beyond parameter syntax to inform agents of the output context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a single macro by numeric ID and lists the returned fields (title and actions), distinguishing it from sibling tools like list_macros, create_macro, and update_macro.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for fetching one macro but does not explicitly state when to use this versus alternatives like list_macros or search. No when-not context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_organizationA
Fetch one organization by numeric ID, returning name, domain_names, tags, custom_fields, and notes. If you only have a name or domain, use search first to find the ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description covers returned fields but omits behavioral details like error handling, permissions, or whether operation is read-only (though implied by 'fetch'). Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and return fields, followed by usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple fetch with one parameter and no output schema, description adequately covers what it returns and when to use alternatives. Missing error handling details but sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter 'id' with schema coverage 100%. Description reinforces that it's numeric but adds no extra syntax or constraints beyond schema. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states action (fetch), resource (organization), and method (by numeric ID). Lists returned fields, distinguishing it from sibling tools like create_organization or search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to use 'search' first if only name/domain is available, providing clear context for when to use this tool vs. alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_talk_statsA
Return Zendesk Talk (voice) aggregate stats: total calls, average wait, abandoned rate, agent availability. Requires Zendesk Talk add-on. Returns the rolling window Zendesk publishes (typically last 30 days).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavior. It mentions the rolling window (30 days) and that it returns aggregate stats, but does not discuss potential side effects, rate limits, or permissions beyond the add-on requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, no wasted words. Front-loaded with purpose, then requirements and context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool without output schema, the description covers core information: what it returns, requirement, and data window. Could mention that stats are aggregated or numeric, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so schema coverage is 100%. The description correctly adds no parameter info beyond what the schema provides, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies it returns Zendesk Talk aggregate stats, listing specific metrics (total calls, average wait, etc.). No sibling tool covers Talk/voice, so it is well-distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a prerequisite (Zendesk Talk add-on) and explains the rolling window context, but lacks explicit guidance on when to use vs. alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ticketA
Fetch one ticket by numeric ID, returning the full ticket object plus named_custom_fields (e.g. ado_work_item_id). Pass include_comments:true to also pull the comment thread inline (otherwise comments are omitted to save tokens — fetch them separately with get_ticket_comments if needed). If you have an email/subject/tag rather than an ID, use search first to find the ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric ticket ID. To find one from email/subject/tag, use `search` first. | |
| include_comments | No | Include the full comment thread in the response. Default false to save tokens on large threads — set true when you need the conversation history. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that comments are omitted by default to save tokens, and that response includes full ticket object plus named_custom_fields. No annotations provided, so description carries burden; it's transparent for a read operation, though could mention behavior if ID not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with main purpose, no wasted words. Efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately covers key aspects for a simple fetch tool: operation, alternatives, optional parameter behavior. Could be more complete with error handling info, but not essential given schema specifies required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and description adds meaning: for id, explains how to find it via search; for include_comments, explains default and rationale (save tokens). Adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Fetch one ticket by numeric ID', specifying the verb (fetch), resource (ticket), and unique aspects (full object + named_custom_fields). Distinguishes from siblings like search and get_ticket_comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use (numeric ID) and when not (email/subject/tag -> use search). Provides guidance on include_comments: default false to save tokens, and suggests using get_ticket_comments separately if needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ticket_attachmentsA
List every attachment across a ticket's comment thread (files and inline images). Use this to discover what's attached before deciding to call analyze_ticket_images or analyze_ticket_documents. Each attachment includes content_type, size, filename, and a content_url for downloading.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Ticket ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description adds value by listing returned fields (content_type, size, filename, content_url) and clarifying that both files and inline images are included. It does not mention pagination or access restrictions, but the read-only nature is inferred.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first explains purpose, second provides usage guidance and output details. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description covers purpose, usage context, and return fields adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter ('id') described as 'Ticket ID'. The description does not add further meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('attachments across a ticket's comment thread'), distinguishing it from sibling tools like `analyze_ticket_images` and `analyze_ticket_documents`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool ('discover what's attached before deciding to call `analyze_ticket_images` or `analyze_ticket_documents`'), providing clear context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ticket_commentsA
List the comment thread for a ticket (both public replies and internal agent notes). Useful when you need conversation history but already used get_ticket without include_comments:true. Comments are paginated — large tickets may have 50+ comments across multiple pages.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Ticket ID. | |
| page | No | 1-based page number. Defaults to 1. | |
| per_page | No | Comments per page, max 100. Defaults to 100. | |
| sort_order | No | `asc` for oldest-first (chronological reading), `desc` for newest-first. Defaults to `asc`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses that comments include internal agent notes (sensitivity) and that results are paginated for large tickets. It does not state read-only behavior but is otherwise transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the purpose and follows with usage guidance and a behavioral note. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage scenario, and pagination behavior. However, it doesn't describe the return format or structure of comments, which would be helpful given the lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameter descriptions are clear. The description adds context about pagination but does not provide new meaning beyond the schema. It reinforces defaults already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'comment thread for a ticket', specifying both public replies and internal notes. It distinguishes from sibling tools like get_ticket by mentioning the scenario where comments were excluded.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use the tool: after calling get_ticket without include_comments:true. It implies a specific context, though it doesn't mention when not to use or compare with other tools for retrieving comments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_triggerA
Fetch one trigger's definition by numeric ID, returning its conditions (all_conditions/any_conditions) and actions array.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Trigger ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only mentions return fields but does not disclose permission requirements, read-only nature, error behavior (e.g., if ID not found), or any 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb 'Fetch', no redundant words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple single-parameter tool without output schema. Specifies return content. Could mention behavior for non-existent ID but acceptable as is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (id described as 'Trigger ID'), so baseline is 3. The description adds context by specifying the returned fields (conditions, actions) but does not significantly enhance parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches one trigger by numeric ID and returns its conditions and actions, distinguishing it from siblings like list_triggers (list all) and update_trigger (modify).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (fetch single trigger details) but no explicit guidance on when to use this versus alternatives like list_triggers or update_trigger. No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userA
Fetch one user by numeric ID, returning the full profile (name, email, role, organization, tags, custom_fields). If you only have an email or name, use search with type:user email:<email> first to find the ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | User ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool returns a full profile, which is a read operation. It doesn't mention error behavior or authorization, but for a simple get, the transparency is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence covers purpose and output; the second provides usage guidance. Perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 required parameter, no output schema), the description is fully complete. It explains what the tool returns and how to obtain the ID if needed. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes the 'id' parameter as 'User ID'. The description adds context by specifying it's a 'numeric ID' and ties it to the alternative pattern (using search for email/name). This adds useful meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (fetch) and resource (one user by numeric ID), and specifies the returned fields (name, email, etc.). It distinguishes from sibling tools like 'list_users' and 'search'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides guidance on when to use this tool vs. alternatives: 'If you only have an email or name, use `search`... first to find the ID.' This is direct and actionable for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_viewA
Fetch one view's definition by numeric ID, returning the filter conditions, title, and metadata. Useful for understanding how an agent's existing dashboard is built.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | View ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes what is returned but does not mention authentication, rate limits, or side effects. For a simple read operation, the description is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The description is front-loaded with the action and result, earning its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (1 parameter, no output schema, no nested objects), the description provides sufficient context. It explains the return value and a use case, making it complete for an agent to understand when to use this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the 'id' parameter described as 'View ID'. The description adds no additional semantic detail beyond what is already in 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'fetch', the resource 'view definition', and the returned data (filter conditions, title, metadata). It also provides a use case, distinguishing it from sibling tools like list_views.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for understanding a specific view's details, but does not explicitly specify when not to use it or mention alternatives like list_views.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_articlesA
List Help Center (knowledge-base) articles. To find articles by title/body/section, use search with type:article title:<text> instead — list_articles has no filtering parameters and the catalog can be large.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| sort_by | No | Field to sort by | |
| per_page | No | Number of articles per page (max 100) | |
| sort_order | No | Sort order (asc or desc) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that list_articles has no filtering parameters and the catalog can be large, indicating potential performance considerations. No annotations provided, so description carries burden; additional details like pagination could be included but not essential.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with no wasted words. Purpose is front-loaded, and additional guidance is provided concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with well-documented schema parameters and no output schema needed, the description covers purpose, usage alternatives, and limitations. Complete for intended use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions (page, per_page, sort_by, sort_order). The description adds no extra parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List Help Center (knowledge-base) articles' with specific verb and resource. Distinguishes from sibling search tool by noting lack of filtering parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises when to use search instead ('to find articles by title/body/section'), and notes that list_articles has no filtering and catalog can be large.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_automationsA
List ALL automations (time-based rules that run hourly — e.g. closing pending tickets after 7 days). Unlike triggers, automations fire on a schedule, not on events. Use this to audit existing time-based workflows.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| per_page | No | Number of automations per page (max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description informs that automations run hourly and lists all without filtering. It doesn't cover auth or rate limits, but for a read-only list tool, the behavioral traits are sufficiently clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff: main action first, then example, then distinction, then usage purpose. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple tool with 2 params and no output schema, description adequately explains what automations are, how they differ from triggers, and why to use this tool. Missing return format, but not critical for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description does not add further meaning to 'page' or 'per_page' parameters beyond what schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List ALL automations' and elaborates that these are time-based rules that run hourly, with an example. It distinguishes from triggers by noting scheduling vs. events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States 'Use this to audit existing time-based workflows' and contrasts with triggers, helping the agent decide when to use this vs. list_triggers or create_automation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_chatsA
List Zendesk Chat conversations (live chat transcripts), most recent first. Requires Zendesk Chat to be enabled on the account. Use this for end-of-day chat reviews or to find a recent chat by visitor name.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| per_page | No | Number of chats per page (max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose all behaviors. It mentions ordering and a prerequisite but does not discuss pagination behavior, rate limits, or whether the tool is read-only. Since it's a list operation, the lack of destructive behavior is implied but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and efficient, two sentences covering purpose, ordering, prerequisite, and use cases. No superfluous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two parameters and no output schema, the description covers the essential aspects: purpose, ordering, prerequisite, and usage scenarios. It could be improved by noting that the tool does not support filtering beyond the provided parameters, but overall it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (page and per_page). The description adds minimal extra meaning beyond the schema, just the ordering context. It does not elaborate on parameter formats or constraints beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list', the resource 'Zendesk Chat conversations (live chat transcripts)', and the ordering 'most recent first'. It distinguishes from sibling tools like list_tickets by specifying the chat domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a prerequisite ('Requires Zendesk Chat to be enabled') and specific use cases ('end-of-day chat reviews' or 'find a recent chat by visitor name'). It does not explicitly state when not to use the tool or list alternatives, 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_groupsA
List ALL agent groups (teams that own tickets) in the Zendesk instance. Each group has an ID used in ticket routing — use this when you need to discover group IDs for update_ticket group_id:<id> or search type:ticket group:<id>.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| per_page | No | Number of groups per page (max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states the operation lists all groups, implying read-only behavior, but does not explicitly confirm no side effects or discuss pagination limits beyond schema. Adequate but not enhanced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose concisely, second adds actionable usage context. No redundant words, front-loaded with core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides sufficient context for a list tool: explains what groups are (teams that own tickets), how they relate to IDs, and how to use the IDs in other operations. Lacks return format details, but acceptable for a simple list query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers both parameters (page, per_page) with descriptions. The tool description adds no extra semantic information about parameters, so baseline 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'List' and resource 'ALL agent groups (teams that own tickets)'. It specifies the Zendesk instance context and adds concrete use cases for discovering group IDs, which distinguishes it from sibling tools like get_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises using this tool to discover group IDs for update_ticket and search operations. While it doesn't mention when not to use or alternatives, the given guidance is practical and directly tied to common ticket workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_macrosA
List ALL macros (predefined ticket actions agents can apply) accessible to the API user. Use this to discover macro IDs and inspect what canned responses or ticket updates your team has built.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| per_page | No | Number of macros per page (max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description states it lists 'ALL macros accessible to the API user' but does not disclose pagination behavior, rate limits, or auth requirements. It adds context about macro purpose but lacks operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The first sentence states the core action, the second adds use case context. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with 2 optional parameters and no output schema, the description adequately covers purpose and usage. It could mention pagination behavior or max return details, but overall complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. The description adds no additional meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'List', resource 'macros', and explains what macros are (predefined ticket actions). It distinguishes from siblings like get_macro (singular) and create_macro.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explicitly says 'Use this to discover macro IDs and inspect...' providing clear usage context. However, it does not mention when not to use it or alternative tools like search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_organizationsA
List ALL organizations in the Zendesk instance. No filter parameters — to find an organization by name, domain, external_id, or tag use search with type:organization name:<name> or type:organization tags:<tag>. Supports pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| per_page | No | Number of organizations per page (max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'List ALL organizations' implying read-only behavior, and mentions pagination. However, it does not explicitly confirm non-destructiveness or other side effects beyond what is obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. Front-loaded with the purpose, followed by alternative guidance and pagination note. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 optional parameters, no output schema), the description adequately covers behavior and pagination. No gaps identified, but could optionally add return format details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters documented. Description adds useful context: 'max 100' for per_page, which is not present in the schema. No enums or nested objects, but the description enhances understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List ALL organizations' and distinguishes from search by specifying it has no filter parameters. The verb 'list' and resource 'organizations' are precise, and sibling tools like search are explicitly referenced.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly explains when to use this tool (for all organizations) and when to use search instead (filtering by name, domain, etc.). Provides a concrete example of alternative usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ticketsA
List ALL tickets in the Zendesk instance (no filtering). Has no parameters for filtering by recipient, assignee, requester, status, tags, or dates — for any filtered query use search instead with operators like type:ticket recipient:<email> or type:ticket assignee:me status<solved. Use list_tickets only when you genuinely want the full chronological feed across all queues (e.g. for a global activity report). Supports pagination and sorting.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number. Defaults to 1. | |
| sort_by | No | Sort field — `created_at`, `updated_at`, `priority`, `status`, `id`. Defaults to `id` (insertion order) when omitted. | |
| per_page | No | Tickets per page, max 100. Defaults to 100. | |
| sort_order | No | `desc` for newest-first, `asc` for oldest-first. Defaults to `asc`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries full burden. It truthfully states there are no filtering parameters and mentions support for pagination and sorting. However, it does not explicitly declare that the tool is read-only (though implied), nor does it discuss rate limits or authorization. Still, the behavioral traits described are accurate and sufficient for safe use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: it states the main purpose in the first sentence, then provides usage guidance and additional details about pagination/sorting. Every sentence adds value without redundancy. The structure is logical and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, no output schema, and no annotations, the description is fairly complete. It explains the lack of filtering, provides search alternatives, and mentions pagination and sorting capabilities. However, it does not describe the return format or potential limitations (e.g., default page size, maximum results), but the schema covers pagination details. Overall, it is sufficiently complete for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: all four parameters (page, per_page, sort_by, sort_order) have descriptions in the input schema. The description adds context that there are no filtering parameters, but the parameter descriptions already explain their purpose and defaults. With full schema coverage, a score of 3 is appropriate as the description does not 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists ALL tickets in the Zendesk instance with no filtering, and distinguishes itself from the sibling 'search' tool by explicitly saying that for filtered queries one should use 'search' instead. The verb 'list' combined with 'ALL tickets' makes the scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool ('only when you genuinely want the full chronological feed across all queues, e.g. for a global activity report') and when not to use it ('for any filtered query use `search` instead', with examples of search operators). 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.
list_triggersA
List ALL triggers (event-driven rules that fire on ticket create/update). Use this to audit existing triggers before adding new ones, or to discover trigger IDs for inspection. For time-based rules use list_automations instead.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| per_page | No | Number of triggers per page (max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It says 'List ALL triggers' which implies read-only behavior and no side effects. However, it doesn't explicitly confirm safety or describe pagination details beyond schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with the verb and resource, and immediately useful guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a list tool with good schema coverage and sibling differentiation. Lacks explicit mention of return format, but that's implied for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for page and per_page. The description adds no additional parameter-specific meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists triggers and defines them as event-driven rules that fire on ticket create/update. It distinguishes from automations by specifying the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: audit before adding triggers or discover IDs. Provides an alternative tool for time-based rules: list_automations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersA
List Zendesk users with optional role filter (end-user, agent, admin). For finding a user by email/name/organization/external_id, use search with type:user email:<email> — that's far cheaper than paginating the full directory. list_users is appropriate when you need the full directory feed (e.g. building a snapshot).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| role | No | Filter users by role | |
| per_page | No | Number of users per page (max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions optional role filter and pagination parameters, and contrasts with `search` for efficiency. However, it does not specify default pagination values or rate limits, which would enhance transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a clear purpose: define the tool, provide an alternative, and specify appropriate use. Front-loaded with key information. No redundant or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters (all described in schema), no output schema, and no annotations, the description covers the essential aspects: what it does, when to use, and when not to. It lacks details on default pagination or return format, but for a list operation, it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the role filter values and the context of using `list_users` for full directory versus `search` for specific lookups. This usage guidance enriches the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List Zendesk users with optional role filter', specifying the verb and resource. It distinguishes itself from the sibling tool `search` by noting that `search` is for finding specific users. This provides clarity on the tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'appropriate when you need the full directory feed (e.g. building a snapshot)'. It also tells when not to use it: 'For finding a user by email/name/organization/external_id, use search'. This provides clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_viewsA
List ALL saved ticket views (filtered ticket lists agents use as dashboards) accessible to the API user. Use this to discover view IDs, then call Zendesk's /api/v2/views/{id}/tickets for the actual ticket list (this MCP doesn't yet expose execute_view; use search with the equivalent filters as a workaround).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| per_page | No | Number of views per page (max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must bear the burden. It indicates read-only behavior ('list') and mentions accessibility ('accessible to the API user'), but does not describe pagination behavior beyond parameter names or potential limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with purpose, followed by usage guidance. No unnecessary words, and each sentence adds distinct value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with two optional parameters and no output schema, the description provides purpose, usage guidance, and alternatives. However, it lacks details on pagination defaults or return format, making it slightly incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers both parameters (page, per_page) with descriptions, so schema coverage is 100%. The description does not add additional meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List ALL saved ticket views' with a parenthetical explaining what views are. It distinguishes itself from siblings like get_view, create_view, and delete_view by focusing on listing all accessible views.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: use this to discover view IDs, then call Zendesk's endpoint for actual tickets. It also mentions the workaround using search filters since execute_view is not exposed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchA
Search Zendesk tickets, users, organizations, groups, and Help Center articles using Zendesk's full search query language. The query parameter supports operators (combined with spaces, implicit AND): type:ticket|user|organization|group|article, recipient:<email>, assignee:<email|me|none>, requester:<email>, submitter:<email>, status<solved (also >, <=, >=), tags:<tag>, brand:<id>, group:<id>, created>2026-05-01 (also updated, solved_at, due_at), priority:high|normal|low|urgent, via:web|email|chat|phone, plus full-text on subject/description. Combine for precision (e.g. type:ticket recipient:support@acme.com status<solved created>2026-05-01). IMPORTANT: default sort is relevance, not date — for chronological results pass sort_by:created_at (or updated_at) with sort_order:desc. Use this instead of list_tickets whenever you need filtering by recipient/assignee/tag/status/dates or full-text search; list_tickets has no filter parameters. Reference: https://support.zendesk.com/hc/en-us/articles/4408886879258
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number. Defaults to 1. | |
| query | Yes | Zendesk search query. Use operators like `type:ticket`, `recipient:<email>`, `assignee:<email|me>`, `tags:<tag>`, `status<solved`, `created>YYYY-MM-DD`. Combine with spaces (implicit AND). Example: `type:ticket recipient:support@acme.com status<solved`. | |
| sort_by | No | Sort field — `created_at`, `updated_at`, `priority`, `status`, `ticket_type`. Defaults to relevance (NOT date) when omitted; pass `created_at` for chronological results. | |
| per_page | No | Results per page, 1-100. Defaults to 100. Combined with `page` to walk large result sets — `count` in the response tells you the total. | |
| sort_order | No | `desc` for newest-first (typical), `asc` for oldest-first. Only takes effect when `sort_by` is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses default sort (relevance), need to specify sort_by for chronological ordering, and details operators. Minor gap: no mention of rate limits or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is long but well-structured: starts with purpose, then operator details, then critical sort behavior, then when-to-use. Every sentence adds value; however, could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no output schema, and complexity of search syntax, the description covers query operators, sorting, pagination, and usage guidance comprehensively. Leaves no major gaps for effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds significant value beyond schema: explains query operators with examples, sorting defaults, and pagination hints. Baseline 3, plus extra context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches multiple Zendesk entities using a query language. It explicitly differentiates from list_tickets by noting the filtering capabilities that list_tickets lacks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use this tool vs list_tickets (use when filtering by recipient/assignee/tag/status/dates or full-text search). Also includes a reference link for more details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
support_infoA
Return the authenticated agent's identity (id, name, email, role) plus account-level Support metadata: subdomain, account settings, brands, and ticket forms. Use this to confirm which Zendesk instance the session is connected to and which ticket forms / brands are available before constructing tickets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It transparently states it returns identity and metadata without side effects. It could mention authentication requirements or error scenarios, but the core behavior is clear and consistent with a read-only info tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first lists return contents, second gives usage guidance. No filler, efficient structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description thoroughly explains the return data and provides practical context for use. Covers identity fields and account metadata categories. Sufficient for an agent to decide when to invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist. The description adds value by explaining what the tool returns and why it's useful. Baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns the authenticated agent's identity and account-level support metadata, specifying exact fields (id, name, email, role, subdomain, account settings, brands, ticket forms). It distinguishes itself from sibling tools like get_ticket or create_ticket by focusing on session/infrastructure info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to confirm which Zendesk instance the session is connected to and which ticket forms / brands are available before constructing tickets.' This provides clear context. It lacks explicit when-not-to-use or alternatives, but given its unique role, it's still strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_articleA
Update an existing Help Center article's title, body, labels, or section. Pass only the fields you want to change.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Article ID to update | |
| body | No | Updated article body content (HTML) | |
| draft | No | Whether the article is a draft | |
| title | No | Updated article title | |
| locale | No | Updated article locale (e.g., 'en-us') | |
| label_names | No | Updated labels | |
| user_segment_id | No | Updated user segment ID | |
| permission_group_id | No | Updated permission group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions partial update but lacks details on side effects (e.g., return value, revision history, authentication needs) or atomicity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence that captures the essential purpose. It is front-loaded and concise, though it could include a bit more detail without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters, no output schema, and no annotations, the description covers the basic update behavior but omits details like required return format, triggers, or how fields beyond those mentioned behave.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter has a description. The description adds value by indicating a partial update approach, but the mention of 'section' is slightly misleading as no 'section' parameter exists in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing Help Center article, listing specific fields (title, body, labels, or section) and distinguishes from sibling tools like create_article (new articles) and delete_article (removal).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description instructs to pass only fields to change, indicating partial update behavior. While it doesn't explicitly mention when to use vs. alternatives, the context is clear for an update operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_automationA
Update an existing automation. Pass conditions and/or actions to replace those sections (not merge).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Automation ID to update | |
| title | No | Updated automation title | |
| actions | No | Updated actions | |
| conditions | No | Updated conditions | |
| description | No | Updated automation description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the replace-not-merge behavior, which is crucial. However, it omits other behavioral traits like permissions, idempotency, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, followed by critical behavioral note. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 params, nested objects, and no output schema, the description addresses the key nuance of replacement. It could mention that omitted optional fields remain unchanged, but overall it's sufficiently complete for a simple update tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by clarifying that conditions and actions parameters replace (not merge) existing sections. This goes beyond the schema's structural descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'existing automation', and highlights the key distinction of replacing (not merging) conditions/actions, differentiating it from create_automation and other update tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (update an existing automation) but does not explicitly contrast with create_automation or other siblings. It gives usage guidance on passing conditions/actions with replacement behavior, but no when-not-to-use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_groupC
Update an existing group's name or description.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Group ID to update | |
| name | No | Updated group name | |
| description | No | Updated group description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry behavioral disclosure. It only says 'update' without detailing side effects, authorization needs, or what happens if group not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely brief (7 words) but sacrifices important context like usage conditions and behavior. Conciseness should not come at cost of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations; description lacks return value, error handling, and any behavioral context for a mutation tool. Inadequate for an AI agent to use confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter; description merely restates 'name or description', adding no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing group's name or description, distinguishing it from create_group or delete_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like create_group; no prerequisites (e.g., group must exist) or error conditions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_macroA
Update an existing macro's title or actions. Pass actions to replace the full action set (not merge).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Macro ID to update | |
| title | No | Updated macro title | |
| actions | No | Updated actions | |
| description | No | Updated macro description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the key behavioral trait that actions replace rather than merge. However, it omits other traits such as idempotency, permissions, or whether partial updates are supported for title/description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. First states purpose, second gives critical usage instruction. No extraneous information; every word contributes to clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters, no output schema, and no annotations, the description covers the essential behavioral detail (replace not merge). It could clarify that only provided fields are updated, but overall it is sufficient for a simple mutation tool within the sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with parameter descriptions. The description adds extra value for the 'actions' parameter by explicitly stating it replaces the full action set. For other parameters, the description adds little beyond the schema, but the overall added context merits a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Update', resource 'existing macro', and specific fields (title or actions). It also distinguishes from create/delete/get/list macros by specifying 'update' and mentioning replacement behavior for actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: updating an existing macro's title or actions. Includes important guidance that actions replace the full set, not merge. Does not explicitly mention when not to use or alternatives, but context provides enough clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_organizationA
Update an existing organization. Pass only the fields you want to change. To clear domain_names or tags, pass an empty array.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Organization ID to update | |
| name | No | Updated organization name | |
| tags | No | Updated tags | |
| notes | No | Updated notes | |
| details | No | Updated details | |
| domain_names | No | Updated domain names |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses update mutation and array clearing behavior. With no annotations, more detail on side effects, validation, or permissions would improve transparency for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy. Purpose is front-loaded, with additional guidance in a concise manner. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key usage aspects. No output schema, but description focuses on input behavior. Could mention response details, but not essential for a well-understood update operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 6 parameters have schema descriptions (100% coverage). The description adds value beyond schema by explaining partial updates and array clearing, aiding correct parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it updates an existing organization, distinguishing it from create_organization and delete_organization. The verb 'update' and resource 'organization' provide a specific and unambiguous purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to pass only fields to change, which is a typical PATCH behavior. Also provides special guidance for clearing array fields. However, no comparison to alternative tools like create_organization or get_organization.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ticketA
Update an existing ticket. Supports named_custom_fields (e.g. ado_work_item_id, pass null to clear) and raw custom_fields. Pass macro_id to apply a macro's field changes and comment as part of the update — explicit fields you also pass will override the macro's values.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Ticket ID to update | |
| tags | No | Updated tags for the ticket | |
| type | No | Updated ticket type | |
| status | No | Updated ticket status | |
| comment | No | New comment to add | |
| subject | No | Updated ticket subject | |
| group_id | No | New group ID for the ticket | |
| macro_id | No | Macro ID to apply to this ticket. The macro's field changes and comment are merged into this update; any fields you also pass explicitly override the macro's values. | |
| priority | No | Updated ticket priority | |
| assignee_id | No | User ID of the new assignee | |
| custom_fields | No | Raw Zendesk custom_fields entries ({id, value}). Escape hatch for fields not in the named map. | |
| named_custom_fields | No | Named custom fields. Keys map to Zendesk custom field ids via src/config/custom-fields.js. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses key behaviors: macro_id merges changes, explicit fields override, and passing null to named_custom_fields clears it. However, it omits side effects (e.g., notifications, permissions) and return value, which limits completeness for a tool with 12 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the purpose, the second explains the custom fields and macro_id. It is front-loaded, concise, and every sentence adds unique information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (12 parameters, nested objects, no output schema), the description covers the critical nuances of custom fields and macro_id. It does not mention the return value or error conditions, but the schema's strong description coverage compensates. Overall, it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all 12 parameters (100% coverage). The description adds value beyond the schema by explaining macro_id's merging behavior and that named_custom_fields accepts null to clear. This extra context helps the agent use the parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update an existing ticket', which is a specific verb+resource. It distinguishes from siblings like create_ticket, delete_ticket, and add_ticket_comment by focusing on the update operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use macro_id versus direct fields, and mentions overriding behavior. However, it does not explicitly state when to use alternatives like add_ticket_comment for comment-only updates, though the context implies the tool is for multi-field updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_triggerA
Update an existing trigger. Pass conditions and/or actions to replace those sections (not merge).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Trigger ID to update | |
| title | No | Updated trigger title | |
| actions | No | Updated actions | |
| conditions | No | Updated conditions | |
| description | No | Updated trigger description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the replacement behavior for conditions/actions but omits other traits such as side effects, permissions, or the behavior for title/description updates. More detail on update behavior would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence that includes the essential information. No redundant words, and it is front-loaded with the primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the core behavior for a moderately complex tool with nested objects. It lacks explicit mention of return value and behavior for other fields (title, description), but the schema covers those structures. Slight gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by clarifying that conditions and actions replace rather than merge, which is not evident from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update an existing trigger') and the resource. It also distinguishes from siblings by specifying that conditions and actions replace sections, which is unique to update_trigger vs create_trigger.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (updating an existing trigger) but does not explicitly exclude cases or mention alternatives like create_trigger. The context of siblings provides some guidance, but a direct statement would improve clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_userA
Update an existing user. Pass only the fields you want to change; omitted fields are preserved. Use get_user first to confirm the ID and current state. Pass organization_id: null to detach the user from their current organization. String fields can be cleared by passing an empty string.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | User ID to update | |
| name | No | Updated user's name | |
| role | No | Updated user's role | |
| tags | No | Updated tags for the user | |
| No | Updated email address | ||
| notes | No | Updated notes about the user | |
| phone | No | Updated phone number | |
| organization_id | No | Updated organization ID. Pass null to detach the user from their current organization. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It discloses partial update semantics, null handling for organization, and clearing strings. However, it does not mention authorization, idempotency, or side effects beyond basic mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose, partial update tip, and two behavioral notes. No redundancy, front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 simple parameters and no output schema, the description covers key behaviors and a usage tip. Missing return value or error cases, but sufficient for a basic update tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing baseline 3. Description adds value by explaining how to use parameters: omitted fields preserved, null to detach, empty string to clear. This goes beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Update an existing user' with the verb 'update' and resource 'user'. Differentiates from sibling tools like create_user, delete_user, and get_user by specifying partial updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends using `get_user` first to confirm ID and state, and explains how to detach organization (null) and clear string fields (empty string). Lacks explicit exclusions but provides strong precondition guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_viewA
Update an existing view's title, description, conditions, and/or output (columns, grouping, sort). Use get_view first to retrieve and modify the current structure. Only fields you pass are changed — omitted fields are preserved.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | View ID to update | |
| title | No | Updated view title | |
| output | No | Updated columns, grouping, and sort order. | |
| conditions | No | Updated conditions | |
| description | No | Updated view description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It explains the partial update semantics and that fields are preserved unless explicitly changed. It does not mention side effects, authentication, or rate limits, but for a standard update operation this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first lists what can be updated, the second gives usage advice. It is front-loaded, concise, and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters with a detailed schema, the description provides enough context for understanding the update operation. It explains partial update and recommended workflow. However, it does not mention what the response contains (e.g., updated view object or confirmation), which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description adds value by stating 'Only fields you pass are changed — omitted fields are preserved,' which clarifies the partial update behavior beyond the schema. It also recommends using get_view first, aiding parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'update' and the resource 'view', and lists the updatable components: title, description, conditions, and/or output. This clearly distinguishes it from sibling tools like create_view and delete_view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises to 'use get_view first to retrieve and modify the current structure', providing a clear workflow. It also explains the partial update behavior: 'Only fields you pass are changed — omitted fields are preserved.' This gives good usage guidance, though it does not explicitly mention when not 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v1.4.1- Changed
analyze_ticket_documents1 field changed- changed
Input schema / properties / max_tokens / descriptionPrevious value: -"Maximum tokens for response (default: 4096)"New value: +"Maximum tokens for response (default: 8192, max: 16000)"
- Changed
analyze_ticket_images3 fields changed- added
Input schema / properties / attachment_idsAdded value: +{ + "description": "Only analyze these specific image ids. File attachment ids are numbers; inline image ids look like 'inline_<commentId>_<index>'. Discover ids via get_ticket_attachments.", + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "type": "array" +} - added
Input schema / properties / comment_idAdded value: +{ + "description": "Only analyze images from this comment/post. Get IDs via get_ticket_comments or get_ticket_attachments.", + "type": "number" +} - changed
Input schema / properties / max_tokens / descriptionPrevious value: -"Maximum tokens for response (default: 4096, max: 4096)"New value: +"Maximum tokens for response (default: 8192, max: 16000)"
55 tool updates
v1.3.0- First observed
add_ticket_comment - First observed
analyze_ticket_documents - First observed
analyze_ticket_images - First observed
create_article - First observed
create_automation - First observed
create_group - First observed
create_macro - First observed
create_organization - First observed
create_ticket - First observed
create_trigger - First observed
create_user - First observed
create_view - First observed
delete_article - First observed
delete_automation - First observed
delete_group - First observed
delete_macro - First observed
delete_organization - First observed
delete_ticket - First observed
delete_trigger - First observed
delete_user - First observed
delete_view - First observed
get_article - First observed
get_automation - First observed
get_document_summary - First observed
get_group - First observed
get_macro - First observed
get_organization - First observed
get_talk_stats - First observed
get_ticket - First observed
get_ticket_attachments - First observed
get_ticket_comments - First observed
get_trigger - First observed
get_user - First observed
get_view - First observed
list_articles - First observed
list_automations - First observed
list_chats - First observed
list_groups - First observed
list_macros - First observed
list_organizations - First observed
list_tickets - First observed
list_triggers - First observed
list_users - First observed
list_views - First observed
search - First observed
support_info - First observed
update_article - First observed
update_automation - First observed
update_group - First observed
update_macro - First observed
update_organization - First observed
update_ticket - First observed
update_trigger - First observed
update_user - First observed
update_view
TDQS
Each tool has a clearly distinct purpose, with descriptions that explain when to use which (e.g., search vs list_tickets, analyze_ticket_documents vs get_document_summary). No overlapping functionality causes ambiguity.
All tools follow a consistent verb_noun pattern (e.g., create_ticket, list_tickets, get_user, update_organization). No mixed conventions or variations.
55 tools is high but appropriate for the breadth of Zendesk's API (tickets, users, organizations, groups, macros, triggers, automations, views, articles, chats, talk stats, search, analysis). A few tools like get_document_summary feel redundant but overall scope is justified.
Covers CRUD for all major entities and adds advanced features like AI analysis and search. Minor gaps: no direct group membership management and no execute_view tool, but these are edge cases. Core workflows are fully supported.
Maintenance
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
OAuth 2.1 short-link tools for AI agents with scoped tokens, approvals, audit logs, and revocation.
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Zendesk MCP Pack — tickets, users, organizations via OAuth.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables interaction with Zendesk Support for managing tickets, comments, and filtering via the Model Context Protocol. It allows LLMs to perform actions like creating, updating, and listing support tickets through natural language in a Heroku-native environment.-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search tickets, manage tags, create tickets, inspect automations, and more in Zendesk.MIT
- AlicenseAqualityBmaintenanceA Model Context Protocol (MCP) server that connects LLMs to the Zendesk Support & Help Center APIs — with per-user OAuth 2.1 PKCE authentication and fine-grained tool visibility controls.535084MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol server that enables AI assistants like Claude to interact with Zendesk Support through natural language for searching, creating, updating, and managing tickets.412863MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SShadowS/zendesk-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server