Skip to main content
Glama
xalantis-hub

Xalantis MCP Server

Official
by xalantis-hub

@xalantis/mcp-server

MCP server for Xalantis. It lets MCP-compatible AI clients read and act on Xalantis business data through the public /api/v1 API.

Release 0.2.0 covers every current public /api/v1 endpoint exposed by Xalantis at the time of release.

Installation

npm install -g @xalantis/mcp-server

Related MCP server: gorgias-mcp

Configuration

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "xalantis": {
      "command": "npx",
      "args": ["-y", "@xalantis/mcp-server"],
      "env": {
        "XALANTIS_API_KEY": "sk_live_..."
      }
    }
  }
}

Claude Code

claude mcp add xalantis -- npx -y @xalantis/mcp-server

Then set XALANTIS_API_KEY in the shell/session that launches the MCP server.

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "xalantis": {
      "command": "npx",
      "args": ["-y", "@xalantis/mcp-server"],
      "env": {
        "XALANTIS_API_KEY": "sk_live_..."
      }
    }
  }
}

Covered domains

  • Support / Service Desk: tickets, replies, attachments, reports, links, watchers, time entries, subtasks, incidents, service requests, SLA, automations, categories, tags, service catalog, agents.

  • CRM: clients, representatives, contacts, deals, pipelines.

  • Knowledge: articles, search, categories.

  • Billing: subscription and invoices.

  • Finance: invoices and expenses read-only APIs.

  • Contracts: contracts, comments, negotiations, obligations, approvals, signatures, clauses, requests, PDF designs, assets, assignments.

Confirmation model

Tools that mutate data or may expose sensitive data require a confirm: true argument. The AI client should only pass this after the user explicitly confirms the action.

Examples of confirmed actions:

  • creating, updating or deleting records;

  • sending public ticket replies;

  • approving, rejecting, fulfilling or reopening service requests;

  • merging, splitting, archiving or deleting tickets;

  • requesting contract signatures;

  • downloading attachments or reports;

  • uploading files.

If confirmation is missing, the tool returns an error explaining that confirmation is required.

File transfer tools

Binary endpoints are supported through file-aware tools:

{
  "ticket_uuid": "ticket-uuid",
  "file_path": "/local/path/evidence.pdf",
  "confirm": true
}

Downloads can either return base64 or write to a local path:

{
  "ticket_uuid": "ticket-uuid",
  "attachment_uuid": "attachment-uuid",
  "output_path": "/tmp/evidence.pdf",
  "confirm": true
}

When output_path is omitted, the tool returns metadata plus base64 content.

Example prompts

Once connected, an MCP-compatible assistant can answer or act on prompts such as:

  • “List open urgent tickets and summarize the oldest ones.”

  • “Find client Acme and show related contacts.”

  • “Search the knowledge base for SLA configuration.”

  • “Create a ticket for this incident after I confirm.”

  • “Add an internal note to this ticket.”

  • “Show contract obligations due this month.”

  • “Submit this contract for approval after confirmation.”

  • “Download this ticket report to /tmp/report.xlsx.”

Environment variables

Variable

Required

Description

XALANTIS_API_KEY

Yes

Tenant API key used for Xalantis /api/v1 requests.

Security notes

  • The MCP server does not bypass Xalantis backend permissions, plan gates, tenant scoping or rate limits.

  • Destructive and externally visible actions require confirm: true.

  • File downloads can contain sensitive tenant data; use output_path carefully.

  • API keys should be stored in the MCP client environment configuration, not in prompts.

Development

npm ci
npm run lint
npm run build

License

MIT

Available Tools

6 tools
create_ticketB

Create a new support ticket

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNoChannel source
subjectYesTicket subject
priorityNoPriority level (default: medium)
descriptionYesTicket description
category_slugNoCategory slug
requester_nameNoName of the requester
requester_emailYesEmail of the person reporting the issue

TDQS

B3.3/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 for behavioral disclosure. It only states the creation action without any details on side effects, authentication requirements, rate limits, or what happens upon creation. The description lacks transparency regarding system behavior.

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

Conciseness4/5

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

The description is a single sentence with no waste, achieving high conciseness. However, it is very brief and could benefit from slight elaboration without losing structure.

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 the tool has 7 parameters, 3 required, and no output schema, the description is incomplete. It does not explain return values, confirmation of creation, or any behavioral context beyond the basic action. More detail is needed for a complete understanding.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 7 parameters. The description does not add any meaning beyond the schema, but baseline is 3 due to high coverage. No additional parameter context is provided.

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

Purpose5/5

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

The description clearly states 'Create a new support ticket', using a specific verb ('Create') and resource ('support ticket'). It distinguishes from sibling tools like update_ticket, get_ticket, and list_tickets by indicating a creation action.

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 implicitly indicates use for creating tickets but provides no explicit guidance on when to use this tool versus alternatives, nor does it specify prerequisites or exclusions. Usage is implied rather than stated.

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

get_ticketB

Get a single ticket by UUID

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesTicket UUID

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided. The description states 'Get' suggesting a read operation, but lacks disclosure of side effects, permissions, or return format. For a read tool, more detail on behavior would be helpful.

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 unnecessary words. Front-loaded with verb and resource. Every word is informative.

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 no output schema and only one parameter, the description is minimal. It does not explain return values or error behavior (e.g., if ticket not found). For a get tool, this omission reduces completeness.

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

Parameters3/5

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

Schema description coverage is 100% with 'Ticket UUID' for the uuid parameter. The description adds no extra meaning beyond the schema, 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 uses the specific verb 'Get' and resource 'a single ticket' with the method 'by UUID', clearly differentiating from sibling tools like list_tickets (multiple) and create_ticket (mutation).

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 guidance on when to use vs alternatives. The purpose is implied (fetch one ticket by UUID), but there is no mention of when not to use or comparison with list_tickets or update_ticket.

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

list_ticket_repliesC

List all replies and notes for a ticket

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
per_pageNoResults per page
ticket_uuidYesTicket UUID

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 disclose behavioral traits but only states 'list all replies and notes'. It does not mention that the operation is read-only, how pagination works (despite page/per_page in schema), or any ordering. The agent gains no safety or behavioral insight beyond the tool name.

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

Conciseness4/5

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

The description is a single sentence with no waste. It is front-loaded with the core purpose. However, it is so brief that it sacrifices useful context, preventing a maximum score.

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 tool has no output schema, yet the description does not specify the return structure (e.g., fields in each reply, whether notes are included). For a list operation with 3 parameters, this omission leaves the agent uncertain about the response format, making it incomplete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents each parameter. The description adds no additional meaning or context about how parameters like 'ticket_uuid', 'page', or 'per_page' should be used, resulting in baseline score.

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 clearly states the verb 'list' and resource 'all replies and notes for a ticket', distinguishing it from sibling tools like 'reply_to_ticket' (create) and 'get_ticket' (view ticket details). However, it could be more precise by specifying that it includes both public replies and internal notes.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention scenarios where 'get_ticket' or 'reply_to_ticket' might be more appropriate, nor does it offer any exclusion criteria.

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

list_ticketsB

List support tickets with optional filters and pagination

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
searchNoSearch in subject and description
statusNoFilter by status
sort_byNoSort field
per_pageNoResults per page (max 100)
priorityNoFilter by priority
sort_dirNoSort direction
requester_emailNoFilter by requester email

TDQS

B3.3/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 disclose behavioral traits. It only mentions listing, but doesn't state it's non-destructive, clarify auth needs, or describe rate limits or behavior with no results.

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

Conciseness4/5

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

The description is a single sentence that efficiently conveys the core functionality, but could be slightly more structured.

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 8 optional parameters and no output schema, the description fails to mention return format, default pagination, or what happens when filters yield no results, leaving the agent with incomplete information.

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

Parameters3/5

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

The input schema covers all parameters with descriptions, so the description adds no additional meaning beyond what's already available.

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

Purpose5/5

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

The description clearly states the tool lists support tickets with optional filters and pagination, distinguishing it from siblings like create_ticket and 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 listing with filters but lacks explicit guidance on when to use this versus alternatives or when not to use it.

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

reply_to_ticketB

Add a reply or internal note to a ticket

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesReply content
is_internalNoSet to true for an internal note (not visible to requester)
ticket_uuidYesTicket UUID

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It does not mention whether the ticket must be open, if notifications are sent, or what side effects occur (e.g., status changes). The only behavioral insight is that internal notes are not visible to the requester.

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

Conciseness3/5

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

The description is a single sentence, which is concise but arguably too brief. It lacks structure or front-loading of key information. A second sentence clarifying common use cases would improve it without sacrificing conciseness.

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 the tool has three parameters, no output schema, and no annotations, the description is insufficient. It does not cover return values, prerequisites (e.g., ticket existence), or error conditions. The definition leaves significant gaps for an agent to understand correct invocation.

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% (all three parameters have descriptions). The description adds context by explaining that is_internal controls visibility, but does not go beyond what the schema already provides. 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 action ('Add a reply or internal note') and the resource ('to a ticket'). It distinguishes itself from sibling tools like create_ticket (creates a new ticket) and list_ticket_replies (lists existing replies), making its purpose unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., when to use is_internal vs a public reply, or when list_ticket_replies might be more appropriate). It only implies usage through the action description.

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

update_ticketA

Update an existing ticket (status, priority, subject, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesTicket UUID
due_atNoSLA due date (ISO 8601)
statusNoNew status
subjectNoNew subject
priorityNoNew priority
assignee_idNoAssign to agent by ID
descriptionNoNew description
category_slugNoCategory slug

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 disclose behavioral traits. It indicates a mutation operation but lacks details on side effects, permissions, idempotency, or update behavior (e.g., partial vs full overwrite).

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, efficient sentence that front-loads the action and resource, with no redundant phrases.

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 the 8 parameters, no output schema, and no annotations, the description is minimally complete. It covers the purpose and basic scope but does not explain return values or partial update semantics.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents each parameter. The description lists some fields (status, priority, subject) overlapping with the schema, but does not add meaningful new information beyond the schema.

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

Purpose5/5

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

The description clearly states 'Update an existing ticket' with examples of updatable fields like status, priority, subject, etc. It effectively distinguishes from sibling tools such as create_ticket, get_ticket, list_tickets, and reply_to_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 modifying existing tickets, but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusion criteria or prerequisites.

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. 6 tool updatesv0.1.0
    • First observedcreate_ticket
    • First observedget_ticket
    • First observedlist_ticket_replies
    • First observedlist_tickets
    • First observedreply_to_ticket
    • First observedupdate_ticket

TDQS

A3.6/5.0
Disambiguation5/5

Each tool has a clear, distinct purpose: creating, retrieving, listing, replying to, updating tickets, and listing replies. No two tools overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_ticket, list_tickets, reply_to_ticket), making them predictable and easy to understand.

Tool Count5/5

Six tools is an appropriate number for a focused ticketing system. Each tool addresses a core operation without unnecessary redundancy or bloat.

Completeness4/5

The tool set covers the main lifecycle of a ticket: create, read, update, list, and add replies. A delete ticket or advanced search tool is missing, but these are minor gaps for a basic implementation.

Maintenance

ActivitySlowing
ResponsivenessSyncing

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

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI-driven management of osTicket helpdesks through natural language, allowing users to reply to, assign, and transfer tickets without requiring API keys. It reverse-engineers the osTicket staff panel to provide full access to ticket operations using session-based authentication.
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to manage Gorgias support tickets: list open tickets, read conversation history, draft internal notes, send outbound replies (gated), and look up customer history.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables fetching and searching Freshdesk tickets, including details like conversations, attachments, and custom fields, via natural language queries.
    3
    300
    1
    MIT

Latest Blog Posts

MCP directory API

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

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

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