Nine tools, project and TQL resources, five prompts and resumable streaming — served from
/api/mcp inside the Trakr you host. Claude Desktop, Claude Code,
Cursor and any other MCP host can drive it directly.
Tools to act with, resources to read from, prompts to start from.
Every tool publishes an input schema and an output schema. The read-only ones carry readOnlyHint, so a host can decide for itself which calls need a human in the loop.
The protocol is only interesting if the server behind it is the real system of record.
Trakr is self-hosted, so the MCP endpoint is on your hostname, inside your network, behind your controls. A host you run connects to a server you run. There is no intermediary tenant, no shared control plane and no third party in the data path who has to be added to a processor register.
Pair it with a local model and the whole loop — host, model and system of record — is inside the building.
Most tool servers describe what to send and leave the response as free text. Trakr publishes both directions, so a host can validate what comes back and a model has a stable shape to reason about rather than a paragraph to parse.
Business failures come back as isError results rather than protocol errors — "that transition is not allowed" is an answer, not a broken connection.
A host can subscribe to a resource URI and receive a notifications/resources/updated message when the underlying ticket changes — pushed after the write commits, not when it is attempted, and fanned out to that ticket's comments and activity resources.
The transport is streamable HTTP with SSE. Sessions are created on initialize and resume via Last-Event-ID against a 64-event replay buffer, with keepalives and a cap of 500 concurrent sessions per node. Every list is cursor-paginated, and completion is offered for project and ticket keys.
API keys are issued per organisation. The organisation scope is read from the key and never from a tool argument, so no amount of prompt engineering persuades a model into another tenant's data, and project keys are verified to belong to the caller's organisation before anything is returned.
Keys are stored as SHA-256 hashes, shown in plaintext exactly once at creation, and revocable. Losing one is an operational inconvenience, not a data breach with an unknown blast radius.
Create a key in the organisation, copy it once, put it in the host's configuration.
The endpoint is /api/mcp on your own deployment. Replace the hostname with yours and the key with the one revealed when you created it — Trakr keeps only a SHA-256 hash, so there is no second chance to read it.
{
"mcpServers": {
"trakr": {
"type": "http",
"url": "https://trakr.internal.example.eu/api/mcp",
"headers": {
"Authorization": "Bearer <your-organisation-api-key>"
}
}
}
}
/api/mcp. Claude Desktop, Claude Code, Cursor and any other MCP host all speak the same protocol.trakr://guide/tql first. It is the full TQL reference in Markdown, which is what turns "find stale bugs in payments" into a query that actually runs.The Model Context Protocol is a standard way for an AI host to discover and call tools, read resources and use prompts. Because Trakr ships a server at /api/mcp, hosts such as Claude Desktop, Claude Code and Cursor can search, read, create, update, transition, comment on and log work against tickets directly — no bespoke integration, no wrapper around the REST API that drifts out of date.
And because Trakr is self-hosted, the host connects to your server rather than to a vendor's. The system of record never leaves your infrastructure to make the integration work.
Four: 2024-11-05, 2025-03-26 which is the default, 2025-06-18 and 2025-11-25. The server advertises tools, resources with subscribe and listChanged, prompts and completions.
Nine tools: search tickets with TQL, get a ticket, list projects, create a ticket, update a ticket, transition a ticket, add a comment, log work and get statistics.
Every tool publishes both an input and an output schema, and the read-only ones carry readOnlyHint, so a host can distinguish a query from a write and apply its own confirmation policy. Business failures return isError rather than a protocol error.
Through per-organisation API keys. The organisation scope comes only from the key and never from a tool argument, so a model cannot reach another organisation's data by passing a different identifier, and project keys are verified to belong to the caller's organisation.
Keys are stored as SHA-256 hashes, revealed in plaintext exactly once at creation, and can be revoked at any time.
Yes. The transport is streamable HTTP with server-sent events. Sessions are created on initialize and resume via Last-Event-ID against a 64-event replay buffer, with keepalives and a cap of 500 concurrent sessions per node. Every list endpoint is cursor-paginated.
Yes, if it subscribes. Resource subscriptions work per URI, and a notifications/resources/updated message is pushed after a ticket write commits — not when it is merely attempted — fanning out to that ticket's comments and activity resources as well.
Nine tools, five prompts, a TQL reference it can read, and an API key that decides exactly what it can see. Self-hosted. Made in Belgium.