Skip to main content
Glama
nks-hub

NKS osTicket MCP

by nks-hub

NKS osTicket MCP

A Model Context Protocol server for osTicket. It lets AI agents (Claude, etc.) list, search, read, create, update, reply to and delete tickets, plus read stats, manage parent/child subtickets and download attachments.

It talks to the companion NKS osTicket API plugin, which exposes a single JSON endpoint inside osTicket.

Tools

Tool

Purpose

osticket_list_tickets

List tickets (filter by status/department, paginated)

osticket_search_tickets

Full-text search by subject

osticket_get_ticket

One ticket with full message thread

osticket_get_stats

Total / open / closed / overdue counts

osticket_list_statuses

All ticket statuses

osticket_create_ticket

Create a ticket

osticket_update_ticket

Change status / due date / topic, add internal note

osticket_reply_ticket

Post a customer-facing reply (emailed)

osticket_delete_ticket

Delete a ticket (irreversible)

osticket_link_subticket

Link child under parent

osticket_unlink_subticket

Remove a child's parent link

osticket_get_children

List a parent's children

osticket_get_parent

Get a child's parent

osticket_download_attachment

Download an attachment (base64)

Related MCP server: OTRS MCP Server

Requirements

  • Node.js ≥ 18

  • The NKS osTicket API plugin installed on your osTicket instance

  • An osTicket API key (Admin → Manage → API Keys) with the permissions your tools need, bound to the source IP this server runs from

Install

npm install
npm run build

Configuration

Set via environment variables (see .env.example):

Variable

Required

Default

Description

NKS_OSTICKET_URL

yes

URL of the API entry, …/api/nks-osticket.php

NKS_OSTICKET_API_KEY

yes

osTicket API key

NKS_OSTICKET_TIMEOUT_MS

no

30000

Request timeout

NKS_OSTICKET_REJECT_UNAUTHORIZED

no

true

false allows self-signed TLS

Use with Claude Code / Claude Desktop

Add to your MCP server configuration:

{
  "mcpServers": {
    "osticket": {
      "command": "node",
      "args": ["/absolute/path/to/nks-osticket-mcp/dist/index.js"],
      "env": {
        "NKS_OSTICKET_URL": "https://support.example.com/api/nks-osticket.php",
        "NKS_OSTICKET_API_KEY": "your-api-key"
      }
    }
  }
}

License

MIT — see LICENSE.

Available Tools

14 tools
osticket_create_ticketC

Create a new ticket. Requires subject and message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSubmitter name
emailNoSubmitter email
messageYesTicket body (message)
subjectYesTicket subject
topicIdNoHelp topic id
priorityNoPriority id (1=low..4=emergency)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must explain behavioral traits. It only says 'Create a new ticket' and 'Requires subject and message.' It omits details on authentication, rate limits, what happens with invalid data, or side effects (e.g., email notifications).

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

Conciseness4/5

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

The description is short and to the point, consisting of two sentences. It is concise without being verbose, but it could be more informative while remaining succinct.

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

Completeness2/5

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

Given 6 parameters and no output schema, the description is minimal. It does not explain default values for optional fields (e.g., priority, topicId), the response format, or error handling. It lacks completeness for a tool that creates a resource.

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

Parameters3/5

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

Schema coverage is 100%, so each parameter has a description in the schema. The tool description adds only that subject and message are required, which is already implied by the schema. No additional semantic guidance is provided.

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

Purpose4/5

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

The description states the verb 'Create' and resource 'a new ticket', and notes required fields. It clearly communicates the core action, though it doesn't differentiate from siblings like osticket_reply_ticket.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as osticket_reply_ticket or osticket_update_ticket. There is no context on prerequisites or exclusions.

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

osticket_delete_ticketA

Permanently delete a ticket and its thread. Irreversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYesTicket number to delete

TDQS

A3.9/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses destructive nature ('Permanently delete', 'Irreversible'), which is good, but lacks details on permissions or side effects.

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

Conciseness5/5

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

Two sentences, no wasted words, front-loaded with key information.

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

Completeness5/5

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

For a simple delete operation with one parameter and no output schema, the description sufficiently covers what the tool does and its irreversibility.

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

Parameters3/5

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

Schema covers 100% of parameter with a description. Description adds no extra meaning beyond what schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'delete' and the resource 'ticket and its thread', distinguishing it from siblings like create, update, reply, etc.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. The word 'Irreversible' implies caution but doesn't explicitly state prerequisites 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.

osticket_download_attachmentA

Download a ticket attachment by its numeric file id (from a thread entry's attachments[].fileId in osticket_get_ticket), returned as base64.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileIdYesAttachment file id

TDQS

A4/5.0
Behavior3/5

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

No annotations provided; description indicates read-only download, but doesn't disclose potential size limits, authentication needs, or handling of non-existent files. Adequate but not thorough.

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

Conciseness5/5

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

Single sentence that is front-loaded with key verb and resource, including input source and output format. No wasted words.

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

Completeness4/5

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

For a simple download tool with one param and no output schema, the description covers input source and output format. Could add error handling or size info, but sufficient given simplicity.

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

Parameters4/5

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

Input schema has 100% coverage with one integer parameter. Description adds context by specifying the source (thread entry's attachments[].fileId), which goes beyond the schema's basic 'Attachment file id'.

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

Purpose5/5

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

Description clearly states it downloads a ticket attachment by numeric file ID and returns as base64. It specifies the ID comes from osticket_get_ticket's attachments array, distinguishing it from sibling tools which don't handle downloads.

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

Usage Guidelines3/5

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

No explicit when to use or alternatives, though it implies use after getting a fileId from osticket_get_ticket. Lacks guidance on when not to use or error conditions.

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

osticket_get_childrenB

List all child tickets of a parent ticket.

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYesParent ticket number

TDQS

B3.1/5.0
Behavior2/5

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

Description does not disclose behavioral traits such as whether the operation is read-only, any required permissions, or potential side effects. With no annotations, the description carries full burden but fails to provide this information.

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

Conciseness4/5

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

Description is a single, front-loaded sentence. It is concise but extremely brief, potentially sacrificing informative detail for brevity.

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

Completeness2/5

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

The description is too minimal for a tool with no output schema. It does not explain the return format (e.g., list of ticket IDs or full objects), pagination, or how to interpret results. This lack of completeness may hinder correct usage.

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

Parameters3/5

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

Input schema has one parameter 'number' with description 'Parent ticket number.' The tool description does not add any additional meaning beyond what the schema already provides. Since schema coverage is 100%, baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states 'List all child tickets of a parent ticket,' specifying verb (list) and resource (child tickets). It distinguishes this tool from sibling osticket_get_parent, which retrieves the parent ticket.

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

Usage Guidelines2/5

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

No guidance provided on when to use this tool versus alternatives like osticket_get_parent or osticket_link_subticket. The description lacks explicit usage context.

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

osticket_get_parentA

Get the parent ticket of a child ticket (null if none).

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYesChild ticket number

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description only states the function without disclosing any behavioral traits such as permissions, read-only nature, or error conditions.

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

Conciseness5/5

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

The description is a single, concise sentence that efficiently conveys the tool's purpose without unnecessary words.

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

Completeness3/5

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

For a simple tool with one required parameter and no output schema, the description is adequate. It explains the return value but does not cover error cases or the representation of the parent ticket.

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

Parameters3/5

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

Schema coverage is 100%, and the description aligns with the parameter's schema description. However, it adds no additional 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.

Purpose5/5

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

The description clearly states the action (get parent ticket) and the resource (a child ticket). It distinguishes from siblings like osticket_get_children and osticket_get_ticket.

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

Usage Guidelines3/5

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

The description implies usage when you have a child ticket number, but it does not explicitly state when to use this over alternatives or provide exclusion criteria.

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

osticket_get_statsA

Aggregate ticket statistics: total, open, closed, overdue.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It correctly indicates a read-only operation (aggregate stats), but does not disclose whether the data is real-time, cached, or any authorization requirements. Adequate but lacks deeper 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.

Conciseness5/5

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

The description is a single sentence with no unnecessary words. It efficiently conveys the tool's purpose and output. Every word is earned.

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

Completeness5/5

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

Given the tool has zero parameters, no output schema, and is a simple stats endpoint, the description adequately lists the returned statistics. Provides complete information for an agent to understand the tool's capability.

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

Parameters5/5

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

The input schema has no parameters (0 required), so schema coverage is 100% trivially. The description adds value by enumerating the specific statistics included (total, open, closed, overdue), which is essential since there is no output schema.

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

Purpose5/5

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

The description clearly states the verb 'get' and resource 'stats', and specifies the exact statistics returned (total, open, closed, overdue). This distinguishes it from sibling tools that manipulate individual tickets or lists.

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

Usage Guidelines3/5

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

The description implies when to use (when aggregate ticket statistics are needed) but does not explicitly state when not to use or mention alternatives. It is clear but lacks exclusion or comparison guidance.

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

osticket_get_ticketA

Get one ticket with full detail including the message thread. Each thread entry may include an "attachments" array (fileId, name, type, size, inline, cid); pass an attachment's numeric fileId to osticket_download_attachment. Provide number or id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoInternal ticket id (alternative to number)
numberNoPublic ticket number, e.g. "CH00072469"

TDQS

A3.8/5.0
Behavior3/5

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 full detail and thread with attachments, which implies a read operation. However, it does not explicitly confirm idempotency, safety, or any side effects, leaving some ambiguity.

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

Conciseness4/5

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

The description is concise with two sentences. The first sentence front-loads the core purpose. The second adds necessary detail about attachments and parameter usage. No unnecessary words, but could be slightly shorter.

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

Completeness3/5

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

For a tool with no output schema, the description covers the main return structure (message thread, attachments). It tells how to use parameters (one of id/number). However, it does not list other likely fields (status, subject, etc.), leaving some incompleteness for an agent needing full understanding.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for both id and number. The description adds value by clarifying that 'Provide number or id' suggests mutual exclusivity and provides an example format (e.g., 'CH00072469'), which is not in the schema.

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

Purpose5/5

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

The description clearly states 'Get one ticket with full detail', specifying the verb and resource. It distinguishes from sibling tools like osticket_list_tickets (list) and osticket_search_tickets (search) by focusing on a single ticket with full detail and thread.

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

Usage Guidelines3/5

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

The description implies use when you need full detail of a single ticket, but it does not explicitly state when to use this vs alternatives (e.g., osticket_list_tickets for summaries, osticket_search_tickets when id is unknown). No exclusions or when-not scenarios are mentioned.

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

osticket_list_statusesA

List all ticket statuses with their canonical state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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' which implies read-only behavior, but does not disclose other traits like whether it requires authentication, rate limits, or if it returns cached data. Minimal transparency.

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

Conciseness5/5

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

Single sentence, no wasted words. Front-loaded with the action and resource.

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

Completeness3/5

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

For a simple list tool with no parameters and no output schema, the description is adequate but lacks details about the response format or what 'canonical state' includes. Could be more complete.

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

Parameters4/5

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

There are zero parameters, schema coverage is 100%. The description adds no parameter info, which is acceptable as none exist. Baseline 4 applies.

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

Purpose5/5

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

The description clearly specifies the verb ('List') and resource ('ticket statuses'), and adds 'with their canonical state' which distinguishes it from sibling tools like osticket_list_tickets.

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

Usage Guidelines3/5

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

The description implies usage for retrieving statuses by mentioning 'List all ticket statuses', but does not explicitly state when to use it vs alternatives or provide any exclusions.

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

osticket_list_ticketsA

List tickets, newest first. Filter by status (open/closed/resolved/archived or numeric id) and department. Paginated.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort field (default created)
limitNoMax results (default 20, max 100)
offsetNoPagination offset
statusNoopen | closed | resolved | archived | <status id>
departmentNoDepartment name or id

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses pagination and sorting behavior, but does not mention read-only nature, authorization needs, or potential side effects. 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.

Conciseness5/5

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

Single sentence with no redundancy. Every word serves a purpose: verbs, nouns, and modifiers are precise. Excellent front-loading of purpose.

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

Completeness4/5

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

For a list tool with 5 parameters fully described in schema and no output schema, the description covers essential aspects: ordering, filters, pagination. It does not detail return format, but that is acceptable given tool complexity.

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

Parameters3/5

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

Schema coverage is 100% with descriptions already present. The description adds clarity on default sort ('newest first') and reinforces filter options, meeting the baseline for high coverage.

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

Purpose5/5

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

The description clearly states 'List tickets' with specifics: newest first order, filterable by status and department, and paginated. This distinguishes it from sibling tools like osticket_search_tickets or osticket_get_ticket.

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

Usage Guidelines3/5

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

The description implies usage for retrieving filtered, paginated ticket lists, but does not explicitly compare to alternatives like osticket_search_tickets. It provides context on default sorting and available filters but lacks '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.

osticket_reply_ticketA

Post a customer-facing reply to a ticket. This is emailed to the ticket's user.

ParametersJSON Schema
NameRequiredDescriptionDefault
alertNoEmail the user (default true)
titleNoOptional reply title
numberYesTicket number to reply to
responseYesReply body, sent to the customer

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It states the reply is emailed, but does not cover other important behaviors such as authentication requirements, whether the reply modifies ticket state, or what happens when 'alert' is false. The schema provides some detail (e.g., alert default), but the description itself lacks transparency.

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

Conciseness5/5

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

Two sentences, no fluff. Every word contributes to understanding the tool's core function. Well-structured and front-loaded.

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

Completeness3/5

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

The description covers the core purpose but omits return value, error conditions, and prerequisite checks (e.g., ticket existence). Given no output schema and 4 parameters, additional details would improve completeness for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds only minor context (e.g., 'emailed' reiterates schema). No new semantic value beyond what the schema already provides for each parameter.

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

Purpose5/5

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

The description clearly states the action (post a customer-facing reply) and the resource (ticket). It also clarifies that the reply is emailed to the ticket's user, which distinguishes it from internal updates. This specificity makes 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.

Usage Guidelines3/5

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

The description implies use for customer-facing replies but does not explicitly contrast with sibling tools like osticket_update_ticket (which might be for internal notes). No when-not-to-use guidance is provided, though the email hint helps infer context.

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

osticket_search_ticketsA

Full-text search tickets by subject. Optional status filter and pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
limitNo
queryYesSearch text matched against ticket subjects
offsetNo
statusNoOptional status filter

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It states it's full-text search and mentions optional filters, but does not explain default behavior (e.g., sort order), result format, or case sensitivity. Some transparency is added beyond the schema, but more detail 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.

Conciseness5/5

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

Single sentence, 12 words, front-loaded with the primary action. No unnecessary verbiage; every word contributes to understanding.

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

Completeness2/5

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

With no output schema and only 40% parameter coverage, the description lacks critical information such as response format, default sort order, and whether search is case-sensitive. Agent may struggle to use tool correctly without trial and error.

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

Parameters3/5

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

Schema description coverage is 40%; description adds 'full-text' context to query and groups pagination (limit/offset) as 'pagination', but does not explain individual parameter semantics (e.g., sort enum values, offset meaning). It provides marginal added value.

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

Purpose5/5

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

Description clearly states it performs full-text search on tickets by subject. This distinguishes it from sibling tools like osticket_list_tickets (which lists all tickets without search) and osticket_get_ticket (single ticket retrieval).

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

Usage Guidelines4/5

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

The description implies this tool should be used when searching tickets by subject, with optional status and pagination. It does not explicitly state when not to use it or name alternatives, but the context is clear enough for differentiation from siblings.

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

osticket_update_ticketA

Update a ticket: change status, set/clear due date, change help topic, and/or add an internal staff note.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoInternal note (staff-only, not emailed)
numberYesTicket number to update
statusNoNew status (open/closed/... or id)
dueDateNoDue date (ISO); null clears it
topicIdNoNew help topic id
noteTitleNoTitle for the internal note
statusCommentNoOptional comment logged with a status change

TDQS

A3.5/5.0
Behavior2/5

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

No annotations exist, and the description does not disclose behavioral traits such as required permissions, whether updates are logged, or the effect on the ticket. The term 'update' is generic and carries the full burden of behavioral disclosure.

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

Conciseness5/5

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

One concise sentence that front-loads the main action and lists capabilities. No wasted words.

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

Completeness3/5

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

Given no annotations, no output schema, and 7 parameters with good schema coverage, the description provides a reasonable overview but lacks behavioral context and does not cover all parameter nuances (e.g., noteTitle).

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds context by grouping parameters into actions (e.g., 'change status' for status), but does not explain noteTitle or statusComment beyond what schema already provides.

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

Purpose5/5

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

Description clearly states 'Update a ticket' and lists specific actions (change status, set/clear due date, change help topic, add internal note). This distinguishes it from siblings like create, delete, and reply.

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

Usage Guidelines3/5

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

The description implies usage for updating ticket fields, but no explicit guidance on when to use this vs. siblings like osticket_reply_ticket (which likely adds a public reply). No when-not or alternatives mentioned.

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.

  1. 14 tool updatesv1.1.0
    • First observedosticket_create_ticket
    • First observedosticket_delete_ticket
    • First observedosticket_download_attachment
    • First observedosticket_get_children
    • First observedosticket_get_parent
    • First observedosticket_get_stats
    • First observedosticket_get_ticket
    • First observedosticket_link_subticket
    • First observedosticket_list_statuses
    • First observedosticket_list_tickets
    • First observedosticket_reply_ticket
    • First observedosticket_search_tickets
    • First observedosticket_unlink_subticket
    • First observedosticket_update_ticket

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a unique operation on tickets or related entities (attachments, parent-child relationships, statistics, statuses). There is no ambiguity between tools; even similar ones like get_ticket vs list_tickets vs search_tickets have clearly different purposes.

Naming Consistency5/5

All tools follow the pattern osticket_verb_noun with consistent snake_case. Verbs like create, delete, get, list, search, reply, update, link, unlink, and download are appropriately chosen and clearly convey the action.

Tool Count5/5

14 tools cover the essential ticket management operations (CRUD, parent-child, attachments, statistics, statuses) without being excessive. Each tool earns its place for a focused osTicket MCP server.

Completeness4/5

Core ticket lifecycle (create, read, update, delete), parent-child management, replying, searching, and statistics are covered. Minor gap: no tool for uploading attachments on ticket creation or replies, but the overall surface is thorough.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nks-hub/nks-osticket-mcp'

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