
Tickiti
io.github.tickitiPublished by GitHub account tickitiv0.2.0Updated Nov 1, 2026
Connect AI assistants to the Tickiti helpdesk API: tickets, queries, reports and admin.
Overview
Connects an AI assistant to the Tickiti helpdesk API so it can read, write and administer tickets, templates, mail and reports.
- What you can do
- Create, respond to, close, merge, link, split, delete and restore tickets, and manage participants and attachments
- Read ticket threads, individual responses, attachments, queues, teams, staff and resolutions, and search or export responses
- Manage stock responses, templates and template images, and render templates without sending
- Send and search mail, list perspectives and watchlists, run reports, and manage API tokens
- Discover any API endpoint and call it generically to reach the rest of the v1 API
- When to use it
- Useful when a support team runs Tickiti and wants an assistant to triage, answer, search or report on tickets from a chat session, or to automate helpdesk admin tasks. Mint a narrowly scoped token if the assistant should only read.
- Requirements
- Runs locally as a stdio process built from source with Node.js 20 or newer. Needs a Tickiti API token and the public base address of the Tickiti install, set via the TICKITI_API_BASE and TICKITI_API_TOKEN environment variables; multiple installs can be configured through TICKITI_INSTANCES. An MCP-capable client is required.
Installation
In SourceWeft
- Open Tickiti in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
tickiti-mcp
An MCP (Model Context Protocol) server that exposes the
Tickiti helpdesk API to AI assistants such as Claude. It is a thin shim over the
Tickiti Public API v1 (/api/v1/...): each MCP tool forwards to a v1 endpoint, adding
your bearer token and — for writes — an idempotency key. The token's abilities are the
security boundary: the server only relays calls, it never widens them, so a read-only token
gives a read-only assistant.
📖 Full documentation: https://www.tickiti.com/docs/topic/mcp_server/
Tools
The ticket tools have full, validated inputs; the rest of the API is reachable through two general tools, so the whole surface is available without a separate tool per endpoint.
Tickets
Settings, templates, mail, administration
For anything beyond the named tools (mail, templates, workflow writes, administration,
supervisor), the assistant uses list_endpoints to discover the action, then tickiti_call
to run it — covering all of the v1 API.
Requirements
- Node.js 20 or newer
- A Tickiti API token, minted from Administration → API keys, scoped to the abilities you want the assistant to have
- An MCP-capable client — e.g. Claude Code or the Claude desktop app
Install
The built server is dist/server.js.
Configure
The server reads two environment variables (it fails fast on startup if either is missing):
More than one instance
To reach several Tickiti installs from one server (production and staging, say), add
TICKITI_INSTANCES: JSON, or the path of a JSON file, mapping a name to { "base", "token" }.
The TICKITI_API_BASE / TICKITI_API_TOKEN pair stays the default instance, named by
TICKITI_INSTANCE_NAME (default default).
Every tool then takes an optional instance argument; list_instances shows the names.
Use with Claude Code
Confirm with claude mcp list (or /mcp in a session). Remove with claude mcp remove tickiti.
Other MCP clients configure servers in their own settings file, but the shape is the same:
run node /absolute/path/to/tickiti-mcp/dist/server.js as a stdio server with
TICKITI_API_BASE and TICKITI_API_TOKEN set in its environment.
Permissions & security
The server adds no permissions of its own. Every call runs as the staff user the token belongs to, gated by the token's abilities — exactly as a direct API call would be. To limit what an assistant can do, mint a narrowly-scoped token:
- A read-only token (e.g.
tickets:read,reports:read) gives an assistant that can look but not change anything. - Grant write abilities only for the families the assistant needs to act on.
- If a call is refused, the server reports the reason (missing ability, role or plan).
The ticket-writing tools send an idempotency key with every call, so a retried request never creates a duplicate ticket or response.
Long bodies can be given as content_path (a local file) instead of content, and files and
images always go by path: the server reads them, so their bytes never pass through the model.
How it works
Maintainers
src/generated/manifest.ts is generated from Tickiti's own route table
(php artisan route:list --json), so abilities, roles, plan gates and path params are never
hand-maintained. Regenerate against a Tickiti checkout after the API changes:
There is an end-to-end sweep over every endpoint in tests/all-paths.mjs
(npm run test:paths, needs a base URL and a full-ability token against a scratch instance),
and an offline check of the tool registration in tests/smoke-tools.mjs
(npm run build && node tests/smoke-tools.mjs).
Several tools call endpoints added to Tickiti in October 2026. Against an older install they
return 404; list_endpoints describes the newest API.
License
MIT © Oxenic
Source: README.md at commit e0d53b6
Tools
0Version history
2- v0.2.0LatestOct 4, 2026
- v0.1.0Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts