# Ticket AI (pypi · ticket-ai-mcp)

Measures tickets against the ones your team already shipped: sections, length, labels, duplicates.

- Trust score: 51/100 (low)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- pypi · `ticket-ai-mcp`: 51/100 (this document), [markdown](https://verifymcp.io/servers/syrian963-ticket-ai-mcp/ticket-ai-mcp.md), [page](https://verifymcp.io/servers/syrian963-ticket-ai-mcp/ticket-ai-mcp)

## Channel facts

- Registry: `pypi`
- Package: `ticket-ai-mcp`
- Version: `0.1.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 44/100
  - Malware scan not yet available for this package.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs a script at install time (build_backend) that we could not recognise. It may be perfectly ordinary, but we do not read the published tarball, so we cannot say what it does.
  - 1 of 32 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 35/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: no license is declared.
  - Actively maintained (last published 8 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 59/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1534 tokens (~191/item across 8 items; 8 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 30/100
  - Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 8 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 9 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the Ticket AI MCP server?

Ticket AI runs locally as a PyPI package, launched with uvx ticket-ai-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add syrian963-ticket-ai-mcp -- uvx ticket-ai-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "syrian963-ticket-ai-mcp": {
      "command": "uvx",
      "args": [
        "ticket-ai-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "syrian963-ticket-ai-mcp": {
      "command": "uvx",
      "args": [
        "ticket-ai-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add syrian963-ticket-ai-mcp -- uvx ticket-ai-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "syrian963-ticket-ai-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "ticket-ai-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add syrian963-ticket-ai-mcp --command uvx --arg ticket-ai-mcp
```

### Hermes

```yaml
mcp_servers:
  syrian963-ticket-ai-mcp:
    command: "uvx"
    args: ["ticket-ai-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "syrian963-ticket-ai-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "ticket-ai-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add syrian963-ticket-ai-mcp -t stdio -c uvx -a ticket-ai-mcp
```

### Other

```json
{
  "mcpServers": {
    "syrian963-ticket-ai-mcp": {
      "command": "uvx",
      "args": [
        "ticket-ai-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-20 (score 51, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-18 (score 50, +4)

- [functional improvement] Stability: unverified → 0.23

### 2026-09-17 (score 46, −15)

- [security regression] Malware scan: pass → unverified

### 2026-09-16 (score 61, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-09-15 (score 46, −15)

- [security regression] Malware scan: pass → unverified

### 2026-09-14 (score 61, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-09-11 (score 46)

First indexed and scored.

## MCP tools (8)

### `learn_conventions` (~163 tokens)

Learn how this team writes tickets, and cache the result.

Slow: it reads the comments and linked changes of up to `sample` closed
tickets, which is a few hundred API calls. Call it once per project, not
once per question.

Pass `from_tickets` when the user can name good examples - those are taken
as given and nothing is filtered out. Leave it empty and the tracker is
mined instead: closed tickets are ranked by whether a merge request shipped
for them, whether anyone had to reopen them, and how many clarifying
questions they drew before work started.

Input parameters:

- `from_tickets`
- `keep` (integer)
- `project`
- `sample` (integer)
- `tracker`

Output parameters:

- `result` (string)

### `house_style` (~59 tokens)

What this team's tickets look like: template, length, labels, habits.

Reads the cached profile. Says so plainly if none has been learned yet
rather than returning something empty that looks like an answer.

Input parameters:

- `project`
- `tracker`

Output parameters:

- `result` (string)

### `ticket_template` (~71 tokens)

The skeleton to fill in when writing a new ticket here.

Use this before drafting, not after. It returns the sections this team
actually uses and the length they actually write - then write the ticket
yourself. The server has no opinion about the content.

Input parameters:

- `project`
- `tracker`

Output parameters:

- `result` (string)

### `template_gaps` (~206 tokens)

Compare the issue template this repository declares with the tickets it gets.

Reads `.github/ISSUE_TEMPLATE` or `.gitlab/issue_templates` from the
checkout and lines each field up against how often tickets actually carry
it. The gap is the finding, and it runs both ways:

\- A **required field almost nobody fills in** is a form asking for
  something people cannot easily supply. Say so: the cheap fix is to
  change the form, not to nag the team.
\- A **section most tickets carry that no form mentions** is a convention
  the project grew and never wrote down. Adding it to the template is how
  it survives the next person who joins.

Use this when asked how to improve a board rather than one ticket. It is
the only tool here that reads what the project said it wanted, instead of
only what it does.

Input parameters:

- `project`
- `repo`
- `tracker`

Output parameters:

- `result` (string)

### `ticket_context` (~216 tokens)

Gather what is known about a subject before you write the ticket for it.

\**Call this together with `ticket_template`, then write the ticket
yourself.** This returns evidence, not prose - and specifically the
evidence you cannot get by reading the repository:

\- which past tickets covered this ground, so you can say whether this is a
  duplicate before anyone spends a week on it;
\- **which files the merge requests for those tickets actually changed.**
  That exists only in the tracker's history. It is usually the fastest way
  to find where the work will land, and it is worth naming in the ticket.
\- which files in the checkout mention the subject, as a starting point for
  your own reading.

Read the files it points at before drafting. The list is a search result,
not an understanding of the code, and it will include things that merely
share a word.

Input parameters:

- `project`
- `repo`
- `subject` (string, required)
- `tracker`

Output parameters:

- `result` (string)

### `review_draft` (~131 tokens)

Check a ticket you have written but not created yet.

\**Call this on your own draft before showing it to the user**, and fix
what it finds rather than reporting it. It is the same measurement
\`review_ticket` runs, so a draft that passes here passes there.

This exists so the check happens before the point of no return. Creating
the ticket first notifies whoever watches the board and turns every fix
into an edit with a history.

Input parameters:

- `description` (string, required)
- `labels`
- `project`
- `title` (string, required)
- `tracker`

Output parameters:

- `result` (string)

### `review_ticket` (~62 tokens)

Measure one ticket against the learned house style.

Every finding cites a count over the exemplar sample. Repeat those numbers
to the user - they are the difference between this and generic advice.

Input parameters:

- `project`
- `ticket` (string, required)
- `tracker`

Output parameters:

- `result` (string)

### `review_open_tickets` (~86 tokens)

Review every open ticket and list them least-aligned first.

A planning tool: the answer to "what needs tidying before we can estimate
any of this". One line per ticket, so call `review_ticket` for the detail
on the ones that matter.

Input parameters:

- `label`
- `limit` (integer)
- `project`
- `tracker`

Output parameters:

- `result` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/syrian963-ticket-ai-mcp/ticket-ai-mcp#diagnostics

## Score history

- 2026-09-20: 51
- 2026-09-19: 50
- 2026-09-18: 50
- 2026-09-17: 46
- 2026-09-16: 61
- 2026-09-15: 46
- 2026-09-14: 61
- 2026-09-13: 46
- 2026-09-12: 46
- 2026-09-11: 46

## Common questions

### What is the Ticket AI MCP server?

Ticket AI is an MCP server listed in the public MCP registry as io.github.syrian963/ticket-ai-mcp. Measures tickets against the ones your team already shipped: sections, length, labels, duplicates. This page covers its PyPI package (ticket-ai-mcp).

### Is the Ticket AI MCP server safe to use?

Ticket AI scores 51 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Ticket AI MCP server expose?

Ticket AI exposes 8 tools: learn_conventions, house_style, ticket_template, template_gaps, ticket_context, and 3 more. Their descriptions and schemas cost roughly 994 tokens of context every time the server is loaded.

### Is the Ticket AI MCP server still maintained?

Ticket AI is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- PyPI project: https://pypi.org/project/ticket-ai-mcp/
- Socket report: https://socket.dev/pypi/package/ticket-ai-mcp
- Repository: https://github.com/syrian963/Ticket-AI-MCP
- Changelog RSS feed: https://verifymcp.io/servers/syrian963-ticket-ai-mcp/ticket-ai-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/syrian963-ticket-ai-mcp/ticket-ai-mcp.json
- HTML version of this page: https://verifymcp.io/servers/syrian963-ticket-ai-mcp/ticket-ai-mcp
