# pretix MCP by usefulapi (remote · pretix.usefulapi.io)

Read pretix events, tickets and orders; check attendees in or out with your own account.

- Trust score: 18/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `pretix.usefulapi.io`: 18/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-pretix/pretix.md), [page](https://verifymcp.io/servers/io-usefulapi-pretix/pretix)

## Channel facts

- Endpoint: `https://pretix.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.7.3`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, 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-11-05.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the pretix MCP by usefulapi server?

pretix MCP by usefulapi is a hosted endpoint at https://pretix.usefulapi.io/mcp, so there is nothing to install locally. 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 --transport http io-usefulapi-pretix 'https://pretix.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-pretix": {
      "url": "https://pretix.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-pretix": {
      "type": "http",
      "url": "https://pretix.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-pretix]
url = "https://pretix.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-pretix": {
      "type": "remote",
      "url": "https://pretix.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-pretix --url 'https://pretix.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-pretix:
    url: "https://pretix.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-pretix": {
      "Transport": "http",
      "Url": "https://pretix.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-pretix -t streamable-http -u 'https://pretix.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-pretix": {
      "type": "http",
      "url": "https://pretix.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## 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-11-01 (score 18, −46)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Tool safety: pass → unverified
- [security regression] Authorization: pass → unverified
- [security regression] Stability: 0.03 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-10-31 (score 64, +3)

- [security improvement] Authorization: partial → pass
- [functional improvement] Stability: unverified → 0.03
- [functional improvement] MCP protocol: fail → pass
- [functional] New prompt “check_an_attendee_in_or_out”
- [functional] New prompt “check_attendance_and_waiting_lists”
- [functional] New prompt “find_an_order_and_its_attendee_tickets”
- [functional] New prompt “review_upcoming_events_and_ticket_availability”
- [functional] MCP protocol version: 2025-06-18 → 2025-11-25
- [functional] Server version: 1.3.0 → 1.5.0
- [functional] Server version: 1.2.0 → 1.3.0
- [functional] Server version: 1.1.0 → 1.2.0

### 2026-10-30 (score 61)

First indexed and scored.

## MCP tools (18)

### `pretix_list_organizers` (~87 tokens)

List organizers

List the organizer accounts this API token can access (slug, name, public URL). A team token sees its own organizer. GET /organizers/.

Input parameters:

- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-50 (default 50).

### `pretix_get_organizer` (~59 tokens)

Get organizer

One organizer account: slug, name, public URL. GET /organizers/{organizer}/.

Input parameters:

- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.

### `pretix_list_events` (~326 tokens)

List events

List the events of an organizer (name, slug, dates, live/test mode, currency, location, whether it is an event series). Filter by search text, live state or date. GET /organizers/{organizer}/events/.

Input parameters:

- `date_from_after` (string): Events starting after this date-time (ISO 8601 with timezone).
- `date_from_before` (string): Events starting before this date-time (ISO 8601 with timezone).
- `has_subevents` (boolean): Only event series (true) or single events (false).
- `is_future` (boolean): Only events that are current or in the future (event series are never returned).
- `is_past` (boolean): Only events that are over (event series are never returned).
- `is_public` (boolean): Only public (true) or non-public (false) events.
- `live` (boolean): Only events whose ticket shop is live (true) or not live (false).
- `ordering` (string): Sort order (default slug).
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-50 (default 50).
- `search` (string): Search text (event name or slug).
- `testmode` (boolean): Only events in test mode (true) or not (false).

### `pretix_get_event` (~92 tokens)

Get event

One event in full: name, dates, location, currency, live/test mode, presale window, meta data, enabled plugins. GET /organizers/{organizer}/events/{event}/.

Input parameters:

- `event` (string, required): Event slug (see pretix_list_events).
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.

### `pretix_list_subevents` (~280 tokens)

List event series dates

List the dates (sub-events) of an event series, for one event or across all series of the organizer. Each has id, name, dates, location, presale window and price overrides. GET /organizers/{organizer}/events/{event}/subevents/ or /organizers/{organizer}/subevents/.

Input parameters:

- `active` (boolean): Only dates whose shop is active (true) or not (false).
- `date_from_after` (string): Dates starting after this date-time.
- `date_from_before` (string): Dates starting before this date-time.
- `event` (string): Event slug. Omit to search across all events of the organizer.
- `is_future` (boolean): Only dates that are current or in the future.
- `is_past` (boolean): Only dates that are over.
- `is_public` (boolean): Only public (true) or non-public (false) dates.
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-50 (default 50).
- `search` (string): Search text.

### `pretix_get_subevent` (~95 tokens)

Get event series date

One date (sub-event) of an event series. GET /organizers/{organizer}/events/{event}/subevents/{id}/.

Input parameters:

- `event` (string, required): Event slug (see pretix_list_events).
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.
- `subevent_id` (integer, required): Sub-event id.

### `pretix_list_items` (~197 tokens)

List products

List the products (ticket types, merchandise) of an event with id, name, default price, tax, active flag, category and variations. GET /organizers/{organizer}/events/{event}/items/.

Input parameters:

- `active` (boolean): Only active (true) or inactive (false) products.
- `admission` (boolean): Only admission products (true) or not (false).
- `category` (integer): Category id.
- `event` (string, required): Event slug (see pretix_list_events).
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-50 (default 50).
- `search` (string): Substring of the product name.

### `pretix_get_item` (~93 tokens)

Get product

One product with its variations, add-ons and bundles. GET /organizers/{organizer}/events/{event}/items/{id}/.

Input parameters:

- `event` (string, required): Event slug (see pretix_list_events).
- `item_id` (integer, required): Product (item) id.
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.

### `pretix_list_quotas` (~190 tokens)

List quotas

List the quotas (capacity pools) of an event: size, the products they cover, closed state and, with with_availability, how many are still available. GET /organizers/{organizer}/events/{event}/quotas/.

Input parameters:

- `event` (string, required): Event slug (see pretix_list_events).
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-50 (default 50).
- `subevent` (integer): Only quotas of this event series date (sub-event id).
- `with_availability` (boolean): Add availability fields (available, available_number). Can be slow on big events.

### `pretix_get_quota_availability` (~125 tokens)

Get quota availability

How much of a quota is left: available, available_number, total_size and what is using it (pending and paid orders, cart positions, blocking vouchers, waiting list). Values can lag slightly. GET /organizers/{organizer}/events/{event}/quotas/{id}/availability/.

Input parameters:

- `event` (string, required): Event slug (see pretix_list_events).
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.
- `quota_id` (integer, required): Quota id.

### `pretix_list_orders` (~391 tokens)

List orders

List orders of one event, or of all events of the organizer when no event is given: code, status, email, total, dates, positions, payments, invoice address. Contains customer personal data. Order secrets, order links and payment details are removed. GET /organizers/{organizer}/events/{event}/orders/ or /organizers/{organizer}/orders/.

Input parameters:

- `code` (string): Exact order code.
- `created_before` (string): Orders created before this date-time.
- `created_since` (string): Orders created at or after this date-time.
- `email` (string): Exact customer email.
- `event` (string): Event slug. Omit to search across all events of the organizer.
- `include_canceled_positions` (boolean): Also return canceled positions inside orders.
- `item` (integer): Only orders containing this product (item id).
- `modified_since` (string): Orders modified at or after this date-time.
- `ordering` (string): Sort order (default datetime).
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-50 (default 50).
- `require_approval` (boolean): Only orders waiting for approval (true) or not (false).
- `search` (string): Search text over order code, names, emails and company names.
- `status` (string): Order status: n = pending, p = paid, e = expired, c = canceled.
- `subevent` (integer): Only orders for this event series date (sub-event id).
- `testmode` (boolean): Only test-mode orders (true) or live orders (false).

### `pretix_get_order` (~153 tokens)

Get order

One order by its code (e.g. ABC12): status, customer email and phone, total, positions (tickets), fees, payments, refunds as recorded, invoice address, check-in flags. Contains customer personal data. Secrets, order link and payment details are removed. GET /organizers/{organizer}/events/{event}/orders/{code}/.

Input parameters:

- `code` (string, required): Order code, e.g. ABC12.
- `event` (string, required): Event slug (see pretix_list_events).
- `include_canceled_positions` (boolean): Also return canceled positions.
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.

### `pretix_list_order_positions` (~331 tokens)

List tickets (order positions)

List the individual tickets (order positions) of one event, or of all events of the organizer when no event is given: attendee name and email, product, variation, price, order code, check-ins, answers. Contains attendee personal data. Ticket secrets are removed. GET /organizers/{organizer}/events/{event}/orderpositions/ or /organizers/{organizer}/orderpositions/.

Input parameters:

- `attendee_name` (string): Attendee name (exact match).
- `event` (string): Event slug. Omit to search across all events of the organizer.
- `has_checkin` (boolean): Only tickets that were checked in (true) or never (false).
- `include_canceled_positions` (boolean): Also return canceled tickets.
- `item` (integer): Only this product (item id).
- `order` (string): Only tickets of this order code.
- `order__status` (string): Order status: n = pending, p = paid, e = expired, c = canceled.
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-50 (default 50).
- `search` (string): Search text over attendee name, email and order code.
- `subevent` (integer): Only this event series date (sub-event id).
- `variation` (integer): Only this variation id.

### `pretix_list_checkin_lists` (~170 tokens)

List check-in lists

List the check-in lists of an event (id, name, the products they admit, event series date, rule settings). Use the list id for check-in status, attendee lists and check-in. GET /organizers/{organizer}/events/{event}/checkinlists/.

Input parameters:

- `event` (string, required): Event slug (see pretix_list_events).
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-50 (default 50).
- `subevent` (integer): Only lists of this event series date.

### `pretix_get_checkin_list_status` (~123 tokens)

Get check-in status

Live check-in numbers of a check-in list: how many tickets exist, how many are checked in, how many are inside now, broken down per product and variation. GET /organizers/{organizer}/events/{event}/checkinlists/{id}/status/.

Input parameters:

- `checkin_list_id` (integer, required): Check-in list id.
- `event` (string, required): Event slug (see pretix_list_events).
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.

### `pretix_list_checkin_list_positions` (~306 tokens)

List attendees of a check-in list

The attendee list of a check-in list: tickets with attendee name, product, order code, check-in history and whether the ticket needs attention. Contains attendee personal data. Ticket secrets are removed; check in by position id. GET /organizers/{organizer}/events/{event}/checkinlists/{id}/positions/.

Input parameters:

- `attendee_name` (string): Attendee name (exact match).
- `checkin_list_id` (integer, required): Check-in list id.
- `event` (string, required): Event slug (see pretix_list_events).
- `has_checkin` (boolean): Only tickets that were checked in (true) or not yet (false).
- `ignore_status` (boolean): Also list tickets of orders that are not paid or are canceled.
- `item` (integer): Only this product (item id).
- `order__status` (string): Order status: n = pending, p = paid, e = expired, c = canceled.
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-50 (default 50).
- `search` (string): Search text over attendee name, email and order code.
- `subevent` (integer): Only this event series date.

### `pretix_list_waiting_list` (~247 tokens)

List waiting list

List the waiting list entries of an event: who waits for which product, since when, and whether a voucher was already sent. Contains personal data (name, email, phone). Read-only: no voucher is sent. GET /organizers/{organizer}/events/{event}/waitinglistentries/.

Input parameters:

- `email` (string): Exact email address.
- `event` (string, required): Event slug (see pretix_list_events).
- `has_voucher` (boolean): Only entries that already got a voucher (true) or are still waiting (false).
- `item` (integer): Only this product (item id).
- `ordering` (string): Sort order (default created).
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-50 (default 50).
- `subevent` (integer): Only this event series date (sub-event id).
- `variation` (integer): Only this variation id.

### `pretix_checkin_position` (~332 tokens)

Check in a ticket

WRITE: check one ticket in (or out) on a check-in list. Records a real check-in in pretix and cannot be undone from here. Identify the ticket by position_id (from pretix_list_checkin_list_positions) or by ticket_secret (the scanned QR code content). pretix applies its own rules: the call is refused for unpaid, canceled, blocked, already-used or wrong-product tickets (the reason is returned), and it never forces a check-in. A required question that is unanswered comes back as incomplete with the question list; answer it with `answers`. One ticket per call. POST /organizers/{organizer}/events/{event}/checkinlists/{list}/positions/{id}/redeem/.

Input parameters:

- `answers` (object): Answers to required questions: { "<question id>": "<answer>" }. For choice questions use comma-separated option ids.
- `checkin_list_id` (integer, required): Check-in list id.
- `event` (string, required): Event slug (see pretix_list_events).
- `nonce` (string): Idempotency key: a retry with the same nonce does not check in twice. Generated when omitted.
- `organizer` (string): Organizer slug (see pretix_list_organizers). Optional when the login token sees exactly one organizer.
- `position_id` (integer): Ticket (order position) id from pretix_list_checkin_list_positions. Give this or ticket_secret.
- `ticket_secret` (string): The scanned ticket code (secret). Give this or position_id.
- `type` (string): entry (default) or exit.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-pretix/pretix#diagnostics

## Score history

- 2026-11-05: 18
- 2026-11-04: 18
- 2026-11-03: 18
- 2026-11-02: 18
- 2026-11-01: 18
- 2026-10-31: 64
- 2026-10-30: 61

## Common questions

### What is the pretix MCP by usefulapi server?

pretix MCP by usefulapi is listed in the public MCP registry as io.usefulapi/pretix. Read pretix events, tickets and orders; check attendees in or out with your own account. This page covers its hosted endpoint (https://pretix.usefulapi.io/mcp).

### Is the pretix MCP by usefulapi server safe to use?

pretix MCP by usefulapi scores 18 out of 100 on VerifyMCP. 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 pretix MCP by usefulapi server expose?

pretix MCP by usefulapi exposes 18 tools: pretix_list_organizers, pretix_get_organizer, pretix_list_events, pretix_get_event, pretix_list_subevents, and 13 more. Their descriptions and schemas cost roughly 3,597 tokens of context every time the server is loaded.

### Does the pretix MCP by usefulapi server require authentication?

Its publisher declares no required credentials for pretix MCP by usefulapi. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

### Is the pretix MCP by usefulapi server still maintained?

pretix MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the pretix MCP by usefulapi server?

VerifyMCP ran 4 checks on pretix MCP by usefulapi, covering TLS certificate, HSTS header, DNSSEC and Transport. 7 items could not be completed, a gap on our side rather than a finding about pretix MCP by usefulapi: Authorization, HTTPS, Schema quality, Stability and 3 more. 5 categories score 0 for that reason, because we only credit what we can confirm. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://pretix.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/pretix/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-pretix/pretix.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-pretix/pretix/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/io-usefulapi-pretix/pretix.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-pretix/pretix
