MCP Request Tracker CrunchTools
Click on "Deploy 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., "@MCP Request Tracker CrunchToolsShow me my open tickets in the queue"
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.
MCP Request Tracker CrunchTools
A secure MCP (Model Context Protocol) server for Request Tracker (RT) ticket management.
Features
Secure Credential Handling: Passwords stored as SecretStr, never logged
Full Ticket Management: Search, view, create, update, and resolve tickets
Time Tracking: Track time worked on tickets
Workflow Automation: Pre-built workflows like checklist completion
Cross-Platform: Works on Linux, macOS, and Windows
Related MCP server: YaTracker Connector
Installation
Option 1: Using uvx (Recommended)
uvx mcp-request-tracker-crunchtoolsOption 2: Using pip
pip install mcp-request-tracker-crunchtoolsOption 3: Using Container
podman run -e RT_URL=... -e RT_USER=... -e RT_PASS=... quay.io/crunchtools/mcp-request-trackerConfiguration
Set the following environment variables:
Variable | Required | Description |
| Yes | Base URL of your RT server |
| Yes | RT username |
| Yes | RT password |
| No | HTTP Basic Auth username |
| No | HTTP Basic Auth password |
Usage with Claude Code
Using uvx
claude mcp add mcp-request-tracker-crunchtools \
--env RT_URL=https://rt.example.com \
--env RT_USER=your_username \
--env RT_PASS=your_password \
-- uvx mcp-request-tracker-crunchtoolsUsing Container
claude mcp add mcp-request-tracker-crunchtools \
--env RT_URL=https://rt.example.com \
--env RT_USER=your_username \
--env RT_PASS=your_password \
-- podman run -i --rm -e RT_URL -e RT_USER -e RT_PASS quay.io/crunchtools/mcp-request-trackerAvailable Tools
Search and View
search_tickets- Search tickets using RT query syntaxget_ticket- Get ticket detailsget_ticket_history- Get ticket history/changelogget_my_open_tickets- Get open tickets for a userget_new_tickets- Get new/unassigned tickets
Update Tickets
set_ticket_owner- Set ticket ownerset_ticket_status- Set ticket statusopen_ticket- Open a ticketresolve_ticket- Resolve/close a tickettake_ticket- Take ownership and open
Time Tracking
set_time_worked- Set total time workedadd_time_worked- Add time to existing time
Communication
add_ticket_comment- Add private comment (not visible to requestor)reply_to_ticket- Add correspondence (visible to requestor)
Creation
create_ticket- Create a new ticket
Workflows
complete_weekly_checklist- Complete a weekly checklist ticket with results
RT Query Syntax Examples
Status = 'new'
Status = 'open' AND Owner = 'scott'
Subject LIKE 'checklist'
Queue = 'Professional'
Created > '2025-01-01'
Owner = 'Nobody'Security
This server is built with security in mind:
SecretStr: Passwords are stored using Pydantic's SecretStr to prevent accidental logging
Error Sanitization: Credentials are scrubbed from all error messages
No Filesystem Access: The server never reads or writes files
No Shell Execution: No subprocess or shell commands
Minimal Dependencies: Only essential packages to reduce attack surface
Automated CVE Scanning: Weekly security scans via GitHub Actions
Container Security: Built on Hummingbird images with minimal CVE count
See SECURITY.md for the full security design document.
Development
# Clone the repository
git clone https://github.com/crunchtools/mcp-request-tracker.git
cd mcp-request-tracker
# Install dependencies
uv sync --all-extras
# Run tests
uv run pytest
# Lint
uv run ruff check src tests
# Type check
uv run mypy srcLicense
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See LICENSE for details.
Available Tools
17 toolsadd_ticket_comment_toolA
Add a private comment/note to a ticket (not visible to requestor).
Args: ticket_id: The ticket ID number comment: The comment text
Returns: Confirmation message
| Name | Required | Description | Default |
|---|---|---|---|
| comment | Yes | ||
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the action (adding a private comment) and the return (confirmation message), but doesn't mention side effects like whether the ticket status changes, permissions required, or reversibility. For a simple mutation tool this is 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?
The description is compact and front-loaded: the first line states the purpose, followed by clearly formatted Args and Returns sections. Every sentence adds necessary information with no 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 tool with only two simple parameters and an output schema, the description provides enough context to use it correctly. It doesn't address error cases or prerequisites (e.g., ticket must exist), but those are likely self-evident for a ticket-comment tool. The explicit privacy note covers the main distinction from siblings.
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 0%, so the description must compensate. The Args section provides plain-English meanings for both 'ticket_id' and 'comment', which adds value beyond the bare schema. It does not specify additional constraints like length or format, but covers the basics.
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 states 'Add a private comment/note to a ticket (not visible to requestor),' which identifies the exact action and resource. The parenthetical explicitly differentiates it from reply_to_ticket_tool and other ticket updates, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'not visible to requestor' caveat gives clear context for when to use this tool versus reply_to_ticket_tool, implying it's for internal notes. However, it doesn't explicitly name alternatives or state when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_time_worked_toolA
Add time to the time worked on a ticket.
Args: ticket_id: The ticket ID number minutes: Additional time to add in minutes
Returns: Confirmation message with new total
| Name | Required | Description | Default |
|---|---|---|---|
| minutes | Yes | ||
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. It does state that the tool adds minutes to existing time worked and returns a confirmation with the new total, which is useful. However, it omits details such as permission requirements, whether minutes must be positive, and how repeated calls behave.
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 compact and well-structured, with a one-line purpose followed by concise Args and Returns sections. Every sentence contributes necessary information without redundancy or filler.
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 two-parameter additive operation with an output schema indicated, the description covers the parameters and return value sufficiently. The main gap is the missing differentiation from set_time_worked_tool, but the tool itself is simple enough that the description is largely 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 only provides integer types with 0% description coverage, so the description is essential. It gives meaningful plain-language meaning for both parameters: ticket_id is the ticket ID and minutes is the additional time to add, with units specified.
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 ('Add time to the time worked on a ticket') with a specific verb and resource. The additive wording helps distinguish it from the sibling set_time_worked_tool, though it does not explicitly name that alternative.
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 is given about when to use this tool versus set_time_worked_tool or other ticket tools. The description explains what it does but not the conditions under which an agent should choose it over an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_weekly_checklist_toolA
Complete a weekly checklist ticket with results.
This is a workflow shortcut that:
Takes ownership of the ticket
Opens the ticket
Adds correspondence with checklist results
Adds time worked (if specified)
Adds a "Completed" comment
Resolves the ticket
Args: ticket_id: The ticket ID number owner: Username taking the ticket checklist_results: The checklist completion results time_minutes: Time spent on checklist (optional)
Returns: Confirmation of all actions taken
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | ||
| ticket_id | Yes | ||
| time_minutes | No | ||
| checklist_results | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden and does so well: it explicitly lists all side effects, including taking ownership, opening the ticket, adding correspondence, adding time, commenting, and resolving the ticket. It also discloses the optional time behavior and the confirmation return, though it does not address failure modes, prerequisites, or reversibility of resolution.
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 well-structured with a one-sentence summary, a numbered workflow list, and labeled Args/Returns sections. It is longer than a simple tool description, but every sentence earns its place because the tool performs a multi-step composite 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?
The description provides the full workflow, clear parameter semantics, and a return-value summary, and an output schema exists, so return details need not be expanded. It is complete enough for correct invocation, though it omits preconditions and failure-behavior details that could matter for a tool that resolves tickets.
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 0%, but the description compensates with an Args block that gives meaning to all four parameters: ticket_id is the ticket ID number, owner is the username, checklist_results is the completion results, and time_minutes is optional time spent. It falls slightly short of defining the expected format or structure for checklist_results.
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 states a specific composite operation: 'Complete a weekly checklist ticket with results.' It then enumerates the exact six-step workflow, which clearly distinguishes it from the individual sibling tools like take_ticket_tool, add_ticket_comment_tool, and resolve_ticket_tool.
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 phrasing 'This is a workflow shortcut' implies that it should be used when the entire checklist-completion sequence should be performed in one callable action. However, the description never explicitly states when to prefer it over chaining the sibling tools individually, nor does it give exclusions or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ticket_toolA
Create a new ticket.
Args: queue: Queue name (e.g., 'General', 'Professional') subject: Ticket subject/title text: Initial ticket content/description requestor: Email of the requestor owner: Username to assign as owner priority: Ticket priority (0-99)
Returns: Created ticket ID and confirmation
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| owner | No | ||
| queue | Yes | ||
| subject | Yes | ||
| priority | No | ||
| requestor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 states the primary side effect ('Create a new ticket') and return value ('Created ticket ID and confirmation'), but does not disclose prerequisites, permission requirements, or whether the action triggers side effects such as notifications or auto-assignment.
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 compact, front-loaded with the main purpose, and organized into Args and Returns sections. Every line adds information and there is no irrelevant prose.
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 all six parameters and the return value, which is sufficient to invoke the tool. It does not mention which parameters are optional, but the schema already provides defaults and required fields, so the agent has the needed 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 description coverage is 0%, so the description compensates by explaining every parameter. It adds useful semantics beyond the property names: requestor is an email, owner is a username, priority has a 0-99 range, and text is the initial ticket content. It stops short of providing examples or allowed queue values.
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 opens with a specific verb and resource: 'Create a new ticket.' This clearly separates it from sibling tools that search, read, update, or resolve existing tickets. The word 'new' removes ambiguity with open_ticket_tool.
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 implies when to use the tool: when a brand-new ticket must be created. It does not explicitly name alternatives or exclusion criteria, but the creation intent is unambiguous given the sibling tools are read/update/resolve operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_open_tickets_toolB
Get all open tickets assigned to a user.
Args: owner: Username to search for
Returns: List of open tickets owned by the user
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that the tool returns a list of open tickets owned by a user, but it does not mention pagination, ordering, or whether 'assigned' and 'owned' are meant to be identical.
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 short and front-loaded with the core purpose. The Args and Returns sections are efficient, though 'assigned to' and 'owned by' are slightly redundant.
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 read tool, the description is mostly adequate, but it lacks usage guidance and leaves the 'my' versus arbitrary-owner ambiguity unresolved. The output schema may cover return structure, but no behavioral details are provided.
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 0%, so the description must compensate. It explains that owner is a username to search for, which adds meaning beyond the bare string type, but it does not clarify format or whether the current user is implied by 'my'.
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: get all open tickets assigned to a user. The owner parameter makes the resource explicit, though the tool name says 'my' while the description allows any username, creating slight ambiguity.
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 is given on when to use this tool versus siblings like search_tickets_tool or get_new_tickets_tool. The description implies a use case but does not state exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_new_tickets_toolA
Get all new (unassigned) tickets, optionally filtered by queue.
Args: queue: Optional queue name to filter by
Returns: List of new tickets
| Name | Required | Description | Default |
|---|---|---|---|
| queue | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Get' implies a read operation but there is no explicit statement about side effects, authorization, pagination, ordering, or potential large result sets. This is a minimal disclosure for a list-all 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?
The description is short and front-loaded, with a clear summary followed by Args and Returns sections. It is efficient, though the Returns line partially duplicates what the output schema would convey.
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 tool with one optional parameter and an existing output schema, the description covers the essential call contract: what is returned, the optional filter, and the core scope. Minor gaps remain around pagination and default queue semantics, but the core use is clear.
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 0%, and the description compensates by explaining that 'queue' is an optional queue name used for filtering. It adds meaning beyond the schema's bare string type, but it does not provide details like valid queue names, case sensitivity, or behavior when the default empty string is used.
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 states a specific verb ('Get'), a clear resource ('new (unassigned) tickets'), and a scoping filter ('optionally filtered by queue'). This clearly distinguishes it from siblings like get_my_open_tickets_tool or search_tickets_tool.
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 need all unassigned tickets, optionally scoped by queue. However, it does not explicitly mention when not to use it or which sibling tools would be better for related cases, leaving the routing largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ticket_history_toolB
Get the history/changelog of a ticket.
Args: ticket_id: The ticket ID number
Returns: Transaction history showing all changes made to the ticket
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose read-only nature and specifics of the history. It only says 'Returns: Transaction history showing all changes' without clarifying if it's read-only, what changes are included, or any auth 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?
The description is concise with a clear structure: purpose, args, returns. No unnecessary content.
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?
While the output schema covers return format, the description lacks usage context, behavioral details, and fails to differentiate from siblings. For a simple get operation, it's minimal 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?
The description adds 'The ticket ID number' which clarifies the parameter's purpose beyond the schema's integer type. However, it doesn't provide additional context like how to obtain the ID or any formatting expectations.
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 retrieves a ticket's history/changelog, distinguishing it from sibling tools like get_ticket_tool which fetches current ticket details.
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 is provided on when to use this tool versus siblings like get_ticket_tool or search_tickets_tool. The description only states what it does, not when to select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ticket_toolB
Get details of a specific ticket.
Args: ticket_id: The ticket ID number
Returns: Ticket details including status, owner, subject, times, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It implies a read-only lookup and lists returned fields such as status, owner, subject, and times, but it does not describe not-found behavior, authorization requirements, or error conditions. The behavior is not misleading, just incomplete.
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 well-organized into purpose, args, and returns sections. The main purpose appears first, and there is no wasted text, though the 'etc.' in the Returns section is slightly vague.
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 one required parameter and an existing output schema, the description is sufficient for a straightforward get-by-id call. It could improve by noting that it is not the tool for searching or viewing history, but it is otherwise complete for basic 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 0%, so the description must explain the parameter. It says 'ticket_id: The ticket ID number,' which confirms the integer is a ticket identifier; this is minimal but adequate for a single-parameter tool.
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 'Get details of a specific ticket' and identifies the key input as ticket_id. It is distinct from broad search/list tools, though it does not explicitly differentiate itself from get_ticket_history_tool or other detail-focused siblings.
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?
There is no explicit guidance on when to use this tool versus alternatives. The intended use is only implied by 'specific ticket' and the required ticket_id, with no mention of related tools such as search_tickets_tool, get_my_open_tickets_tool, or get_ticket_history_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_ticket_toolA
Open a ticket (change status from new to open), optionally taking ownership.
Args: ticket_id: The ticket ID number owner: Optional username to assign as owner
Returns: Confirmation message
| Name | Required | Description | Default |
|---|---|---|---|
| owner | No | ||
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It does disclose the main side effects: status change and optional owner assignment, and states that a confirmation message is returned. It does not mention failure conditions, such as attempting to open a ticket not in new status, or whether an existing owner is overwritten.
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, front-loaded, and organized with clear Args and Returns sections. Every sentence contributes useful information with no filler or 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 simple two-parameter tool, the description covers the inputs and the core state transition well. It is less complete in the context of many sibling tools that overlap in functionality, leaving the agent to inspect those schemas to decide which tool to 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 description coverage is 0%, so the Args block must provide meaning beyond the schema. It adequately explains ticket_id as the ticket ID and owner as an optional username for assignment. It could note the empty-string default behavior, but the schema already exposes that default.
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: open a ticket by changing status from new to open, optionally assigning an owner. It is specific about the resource and state transition, though it does not explicitly differentiate itself from overlapping siblings like set_ticket_status_tool or take_ticket_tool.
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 phrase 'change status from new to open' implies the tool is intended for tickets currently in the new state. However, it provides no explicit guidance on when to use this tool instead of alternatives such as set_ticket_status_tool, take_ticket_tool, or set_ticket_owner_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_ticket_toolA
Reply to a ticket (correspondence visible to requestor).
Args: ticket_id: The ticket ID number message: The reply message
Returns: Confirmation message
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | ||
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does state a key effect – that the correspondence is visible to the requestor – and mentions the return type. However, it does not disclose other behavioral traits such as whether the reply changes ticket status, sends notifications, requires ownership, or is reversible. For a simple tool this is a reasonable but not complete disclosure.
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 compact and well-structured, with a one-line purpose, an Args section, and a Returns section. Every part earns its place, and the most important information is front-loaded. There is no redundant fluff or repetition of schema 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?
For a simple two-parameter tool with an output schema, the description covers the purpose, both parameters, and the return value. The visibility clarification is essential for selecting it among the many sibling tools. The main gap is a lack of explicit usage guidance, but given the low complexity, the description is sufficiently complete 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?
The input schema has 0% description coverage, so the description must supply parameter meaning. It does provide brief semantic definitions: 'ticket_id: The ticket ID number' and 'message: The reply message'. While these are accurate and minimal, they add only slightly more than the raw schema types (integer and string) and do not include constraints, format, or examples, so the compensation is adequate but not rich.
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 opens with 'Reply to a ticket' – a specific verb and resource – and adds the parenthetical 'correspondence visible to requestor', which immediately clarifies that this is a customer-facing reply rather than an internal note. This distinguishes it from siblings like add_ticket_comment_tool, making the purpose clear without needing to open other schemas.
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 parenthetical 'correspondence visible to requestor' gives useful context about when this tool is appropriate, implying a contrast with internal comments, but it does not explicitly mention alternatives or when not to use it. No sibling tools are named, and no exclusion conditions are stated, so usage guidance remains implied rather than fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_ticket_toolA
Resolve/close a ticket, optionally adding a comment.
Args: ticket_id: The ticket ID number comment: Optional comment to add before resolving
Returns: Confirmation message
| Name | Required | Description | Default |
|---|---|---|---|
| comment | No | ||
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are not provided, so the description must carry behavioral weight. It discloses that it resolves/closes a ticket and optionally adds a comment, which implies mutation. However, it lacks details like whether the comment is added before resolution, permissions required, or if the ticket state changes are documented. The return type is a 'Confirmation message' which the output schema may cover, but without annotation the transparency is partial.
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 to the point, with the main action stated first and parameters listed clearly. It includes a returns section, making it structured without unnecessary words. Every sentence contributes.
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 an output schema, return format is likely covered. However, the description lacks context about prerequisites (e.g., ticket must exist, permissions), any side effects beyond resolution, or how this differs from similar tools. For a mutation tool with no annotations and 0% schema coverage, more context is needed to ensure correct usage.
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 0%, so the description must explain parameters. It does: 'ticket_id: The ticket ID number' and 'comment: Optional comment to add'. This adds meaning beyond the schema's property types, though it doesn't elaborate on formats or constraints beyond what's implied.
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 'Resolve/close' and the resource 'ticket', making the purpose unambiguous. It distinguishes from siblings like set_ticket_status_tool and update_ticket_tool by specifying the action of resolving/closing, though it does not explicitly mention those alternatives.
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 it (when resolving a ticket) but does not explicitly state when not to use it or mention alternatives. For example, it doesn't clarify that this is preferred over set_ticket_status_tool for closure, though the action is specific enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tickets_toolB
Search for tickets using RT query syntax.
Args: query: RT query string (e.g., "Status = 'new'", "Subject LIKE 'checklist'", "Owner = 'scott'", "Queue = 'Professional'") order_by: Field to order by, prefix with - for descending (default: -Created)
Returns: List of matching tickets with ID and Subject
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| order_by | No | -Created |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no behavioral hints (no readOnlyHint or destructiveHint), so the description carries the full burden. It states it returns tickets with ID and Subject, but it does not disclose whether the tool is read-only (searching implies no mutation), potential rate limits, complexity of query syntax, or error behavior. The description could mention that this is a search/read operation and not a 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?
The description is concise, uses a clear Args/Returns structure, and front-loads the purpose. It includes useful examples without wasting words. Minor room for improvement: could be even more succinct, but it is well-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?
The tool has an output schema, so the description need not explain return values in detail, but the output schema is not provided in the context. Despite that, the description specifies return fields (ID and Subject). Given the complexity of RT query syntax, the description provides examples but could be more complete by explaining the query syntax structure (e.g., operators, field names) rather than relying on examples. Also, no mention of pagination or limits.
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 0%, so the description must fully document the parameters. It does explain the query parameter with examples and order_by with default value. However, it lacks details on the format of order_by values (e.g., valid field names) and does not specify that order_by is optional, though the default indicates it.
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 searches for tickets using RT query syntax, which is a specific verb and resource. However, it does not explicitly differentiate from sibling tools like get_my_open_tickets_tool or get_new_tickets_tool, though the mention of query syntax implies a more flexible search compared to those presets.
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 examples of queries and explains the order_by parameter, implying usage for flexible searches. However, it does not explicitly state when to use this tool instead of siblings like get_my_open_tickets_tool or get_new_tickets_tool, nor does it mention exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_ticket_owner_toolB
Set the owner of a ticket (take/assign ticket).
Args: ticket_id: The ticket ID number owner: Username of the new owner
Returns: Confirmation message
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | ||
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral disclosure burden. It states the operation and a return message, but does not mention whether the existing owner is overwritten, whether special permissions are required, or whether any side effects or restrictions apply. This is a mutation tool with minimal behavioral detail.
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 well-structured with a one-line purpose, labeled Args, and Returns. Every line contributes useful information and there is no filler or 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 simple two-parameter tool with an output schema, the description covers the essential operation, both parameters, and the return type. It lacks usage differentiation and some behavioral caveats, but overall it is sufficiently complete for an agent to invoke correctly in straightforward cases.
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 0%, but the description adds meaningful semantics to both parameters: ticket_id is identified as the ticket ID number and owner as the username of the new owner. This compensates for the bare schema, although it could add more detail about where to find the ticket ID or format requirements for the username.
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 identifies the action ('Set the owner of a ticket') and the resource (ticket), and even clarifies by saying 'take/assign ticket'. However, it does not distinguish itself from the sibling tool take_ticket_tool, which appears to serve a very similar 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?
No guidance is provided about when to use this tool instead of alternatives such as take_ticket_tool, set_ticket_status_tool, or update_ticket_tool. There are no prerequisites, exclusions, or context cues for an agent to choose this tool correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_ticket_status_toolB
Set the status of a ticket.
Args: ticket_id: The ticket ID number status: New status (e.g., 'new', 'open', 'stalled', 'resolved', 'rejected', 'deleted')
Returns: Confirmation message
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It mentions a confirmation message as a return, but does not describe side effects, potential constraints (e.g., valid status transitions, permission requirements, or reversibility), or any caveats. For a mutation tool, this is a significant gap.
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 well-structured with Args and Returns sections, and is concise without redundant fluff. It front-loads the core action and quickly gets to parameter details, making it easily scannable.
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 tool has an output schema (though not detailed) and only two simple parameters, so the basics are covered. However, given the lack of annotations and the array of sibling tools, richer context about status transitions or when to use this tool would improve completeness. It's adequate but not thorough.
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 0%, so the description must compensate. It explicitly documents both parameters, giving types and example values for status ('new', 'open', etc.) and ticket_id as an integer. This provides meaning beyond the bare schema, though it stops short of listing all valid statuses or relationships.
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 states the action clearly: 'Set the status of a ticket.' The verb 'set' and resource 'ticket' are specific, and the focus on status distinguishes it from sibling tools like resolve_ticket_tool or open_ticket_tool, though it doesn't explicitly contrast with them. It's clear but not maximally differentiated.
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 is provided on when to use this tool versus alternatives like resolve_ticket_tool or update_ticket_tool. The description only states what it does, not the contextual conditions or exclusions that would help an agent choose correctly among the many ticket-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_time_worked_toolB
Set the total time worked on a ticket.
Args: ticket_id: The ticket ID number minutes: Total time worked in minutes
Returns: Confirmation message
| Name | Required | Description | Default |
|---|---|---|---|
| minutes | Yes | ||
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It says 'Set' and 'Returns: Confirmation message,' but it does not state that the operation replaces previously logged time, whether minutes must be positive, or what happens to existing time entries. This is a thin behavioral profile for a mutating 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?
The description is compact and well-structured with Args and Returns sections. Every sentence carries useful information, and there is no filler or repetition of schema types.
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 tool is simple, with two required integer parameters, and the return is summarized as a confirmation message, so the basics are covered. However, it does not distinguish itself from the nearly identical add_time_worked_tool, and the lack of any overwrite or constraint detail leaves a meaningful gap for an agent deciding how to use it.
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 0%, and the description compensates by defining both parameters: ticket_id as 'The ticket ID number' and minutes as 'Total time worked in minutes.' It adds the unit and the 'total' semantic that the schema lacks, though ticket_id's explanation is close to tautological.
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 'Set' and a clear resource, 'the total time worked on a ticket,' which makes the core purpose understandable. The word 'total' hints at the distinction from the sibling add_time_worked_tool, though it does not explicitly say 'replace' or 'overwrite.'
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?
There is no guidance about when to choose this tool over add_time_worked_tool or update_ticket_tool. The word 'total' implies an overwrite scenario, but the description never names alternatives or states the condition that selects this tool, leaving the decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_ticket_toolC
Take ownership of a ticket and open it.
Args: ticket_id: The ticket ID number username: Your username
Returns: Confirmation message
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | ||
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It implies mutation (taking ownership, opening) but does not mention permissions, reversibility, impact on ticket state, or failure conditions. The only behavioral detail is the return of a confirmation message, which is minimal.
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 a single sentence for the main action followed by a structured Args and Returns block. The action is front-loaded, and the formatting is clean. No extraneous content.
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 and the presence of an output schema, the description covers the basic action and parameters. However, without annotations, it omits important context such as whether the ticket must be in a specific state, whether ownership transfer is allowed, or what happens if the ticket is already owned. This leaves gaps for an agent.
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 0%, so the description must compensate. It adds minimal meaning: 'ticket_id: The ticket ID number' and 'username: Your username' provide slight clarification over the raw property names, but no format, constraints, or usage details are given. The description does not adequately explain how these parameters are used.
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 ('Take ownership') and resource ('a ticket'), and adds the secondary action 'and open it', which distinguishes it from set_ticket_owner_tool and open_ticket_tool. It is specific and unambiguous, though it does not explicitly name sibling alternatives.
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 siblings like set_ticket_owner_tool or open_ticket_tool. There is no mention of prerequisites, conditions, or exclusions. The description simply states what it does, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ticket_toolB
Update ticket fields (subject, priority, queue). All fields are optional.
Args: ticket_id: The ticket ID number subject: New subject/title for the ticket priority: New priority (0-99) queue: New queue name (e.g., 'General', 'Professional')
Returns: Confirmation of updated fields
| Name | Required | Description | Default |
|---|---|---|---|
| queue | No | ||
| subject | No | ||
| priority | No | ||
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 that all fields are optional and that the tool returns confirmation of updated fields, which is useful. However, it doesn't disclose potential side effects, permission requirements, or behavior when no fields are provided beyond ticket_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with clear Args and Returns sections. It front-loads the core purpose and lists parameters efficiently. Minor redundancy with the schema (e.g., parameter names) but no wasted sentences.
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 an output schema and only 4 simple parameters, the description is mostly adequate. However, it lacks guidance on edge cases like updating only one field, whether empty strings are treated as updates or no-ops, and how it differs from sibling update tools. The output schema covers return values, so that gap is acceptable.
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 0%, so the description must compensate. It does explain each parameter's purpose (ticket_id, subject, priority, queue) and provides an example for queue. However, it doesn't add details like priority range semantics beyond '0-99' or behavior of empty strings/defaults, which are partially 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 ticket fields and lists the specific fields (subject, priority, queue). This distinguishes it from sibling tools like set_ticket_status_tool or set_ticket_owner_tool, though it doesn't explicitly name those alternatives.
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 by listing optional fields and noting all fields are optional, but it doesn't explicitly state when to use this tool versus alternatives like set_ticket_status_tool or set_ticket_owner_tool. The context is clear for updating general ticket fields, but no exclusions or alternative routing are provided.
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.
17 tool updates
- Changed
add_ticket_comment_tool4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / comment / descriptionRemoved value: -"The comment text" - removed
Input schema / properties / ticket_id / descriptionRemoved value: -"The ticket ID number" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
add_time_worked_tool4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / minutes / descriptionRemoved value: -"Additional time to add in minutes" - removed
Input schema / properties / ticket_id / descriptionRemoved value: -"The ticket ID number" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
complete_weekly_checklist_tool6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / checklist_results / descriptionRemoved value: -"The checklist completion results" - removed
Input schema / properties / owner / descriptionRemoved value: -"Username taking the ticket" - removed
Input schema / properties / ticket_id / descriptionRemoved value: -"The ticket ID number" - removed
Input schema / properties / time_minutes / descriptionRemoved value: -"Time spent on checklist (optional)" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
create_ticket_tool8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / owner / descriptionRemoved value: -"Username to assign as owner" - removed
Input schema / properties / priority / descriptionRemoved value: -"Ticket priority (0-99)" - removed
Input schema / properties / queue / descriptionRemoved value: -"Queue name (e.g., 'General', 'Professional')" - removed
Input schema / properties / requestor / descriptionRemoved value: -"Email of the requestor" - removed
Input schema / properties / subject / descriptionRemoved value: -"Ticket subject/title" - removed
Input schema / properties / text / descriptionRemoved value: -"Initial ticket content/description" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
get_my_open_tickets_tool3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / owner / descriptionRemoved value: -"Username to search for" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
get_new_tickets_tool3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / queue / descriptionRemoved value: -"Optional queue name to filter by" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
get_ticket_history_tool3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / ticket_id / descriptionRemoved value: -"The ticket ID number" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
get_ticket_tool3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / ticket_id / descriptionRemoved value: -"The ticket ID number" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
open_ticket_tool4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / owner / descriptionRemoved value: -"Optional username to assign as owner" - removed
Input schema / properties / ticket_id / descriptionRemoved value: -"The ticket ID number" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
reply_to_ticket_tool4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / message / descriptionRemoved value: -"The reply message" - removed
Input schema / properties / ticket_id / descriptionRemoved value: -"The ticket ID number" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
resolve_ticket_tool4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / comment / descriptionRemoved value: -"Optional comment to add before resolving" - removed
Input schema / properties / ticket_id / descriptionRemoved value: -"The ticket ID number" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
search_tickets_tool4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / order_by / descriptionRemoved value: -"Field to order by, prefix with - for descending (default: -Created)" - removed
Input schema / properties / query / descriptionRemoved value: -"RT query string (e.g., \"Status = 'new'\", \"Subject LIKE 'checklist'\",\n \"Owner = 'scott'\", \"Queue = 'Professional'\")" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
set_ticket_owner_tool4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / owner / descriptionRemoved value: -"Username of the new owner" - removed
Input schema / properties / ticket_id / descriptionRemoved value: -"The ticket ID number" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
set_ticket_status_tool4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / status / descriptionRemoved value: -"New status (e.g., 'new', 'open', 'stalled', 'resolved', 'rejected', 'deleted')" - removed
Input schema / properties / ticket_id / descriptionRemoved value: -"The ticket ID number" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
set_time_worked_tool4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / minutes / descriptionRemoved value: -"Total time worked in minutes" - removed
Input schema / properties / ticket_id / descriptionRemoved value: -"The ticket ID number" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
take_ticket_tool4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / ticket_id / descriptionRemoved value: -"The ticket ID number" - removed
Input schema / properties / username / descriptionRemoved value: -"Your username" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
- Changed
update_ticket_tool6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / priority / descriptionRemoved value: -"New priority (0-99)" - removed
Input schema / properties / queue / descriptionRemoved value: -"New queue name (e.g., 'General', 'Professional')" - removed
Input schema / properties / subject / descriptionRemoved value: -"New subject/title for the ticket" - removed
Input schema / properties / ticket_id / descriptionRemoved value: -"The ticket ID number" - added
Output schema / descriptionAdded value: +"Generic wrapper for non-object return types."
17 tool updates
v0.4.0- First observed
add_ticket_comment_tool - First observed
add_time_worked_tool - First observed
complete_weekly_checklist_tool - First observed
create_ticket_tool - First observed
get_my_open_tickets_tool - First observed
get_new_tickets_tool - First observed
get_ticket_history_tool - First observed
get_ticket_tool - First observed
open_ticket_tool - First observed
reply_to_ticket_tool - First observed
resolve_ticket_tool - First observed
search_tickets_tool - First observed
set_ticket_owner_tool - First observed
set_ticket_status_tool - First observed
set_time_worked_tool - First observed
take_ticket_tool - First observed
update_ticket_tool
TDQS
Scored across 17 tools
Several tools have overlapping purposes: set_ticket_status_tool overlaps with open_ticket_tool and resolve_ticket_tool, while set_ticket_owner_tool overlaps with take_ticket_tool. get_my_open_tickets_tool and get_new_tickets_tool also largely duplicate functionality available through search_tickets_tool. The descriptions help somewhat, but the boundaries between general tools and workflow shortcuts are unclear.
Tool names consistently use snake_case with a verb-first pattern and a _tool suffix (e.g., get_ticket_tool, set_ticket_status_tool). Minor deviations like reply_to_ticket_tool and complete_weekly_checklist_tool introduce prepositions or workflow-specific phrasing, but the overall pattern remains predictable.
17 tools is on the heavy side for this domain, especially given the functional overlap between several tools. A ticketing system can reasonably support this many operations, but some tools (take_ticket_tool, open_ticket_tool, resolve_ticket_tool) could be consolidated without losing much capability.
The core ticket lifecycle is well covered: create, search, get details/history, update fields, manage owner/status, comment/reply, track time, and resolve. Minor gaps exist, such as no explicit attachment handling, queue management, or dedicated ticket deletion, but status can be set to deleted and most workflows are supported.
Maintenance
Related MCP Connectors
Read tickets, contacts, companies, agents and groups; create, update and reply to tickets.
Read tickets, users, orgs, macros and satisfaction ratings; create, update and comment on tickets.
List, search, create, update, and reply to support tickets across your Dispatch Tickets brands.
Wrapper for the official Tiflux API v2 (help desk and service desk): tickets with replies to the req
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI agents to interact with Redmine API for managing tickets, projects, users, and time entries. Supports comprehensive operations including issue creation/updates, project management, time logging, and search with dual authentication (Basic Auth + API Key).1436 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Yandex Tracker through its API for managing tasks, comments, and attachments. It supports issue searching, status transitions, and metadata retrieval for automated project management.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to create, search, and manage OTRS tickets and configuration items via the OTRS API.7Apache 2.0

mcp-server-rtofficial
AlicenseAqualityAmaintenanceConnects AI assistants to a Request Tracker (RT) instance, enabling natural language ticket search, creation, updates, and queue management via the MCP protocol.4347 npm9GPL 2.0