Preo · Model Context Protocol

Connect your AI assistant to Preo

This is the Preo MCP server. It lets an AI client — Claude, Cursor, or anything else that speaks the Model Context Protocol — read and act on your event data: editions, products, orders and more. You approve the connection once in Preo and choose exactly what it may do.

Server URL https://mcp.preo.dev/mcp

That URL is the protocol endpoint, not a web page — paste it into your MCP client. Transport is streamable HTTP, and authorization is OAuth 2.1, so there is no API key to copy anywhere.

How to connect

Add it to your client as a remote MCP server (some clients call this an HTTP or streamable-HTTP server, or a custom connector) using the URL above. The first time the client connects, a browser window opens on Preo, you sign in, and you pick which permissions to hand over. From then on the client holds a token and connects on its own.

Claude Desktop and other clients with a connector UI

  1. Open the client's settings and look for Connectors, Integrations, or MCP servers.
  2. Add a custom / remote server and paste https://mcp.preo.dev/mcp.
  3. Finish the sign-in and approval that opens in your browser.

Clients configured with a JSON file

Cursor (~/.cursor/mcp.json), Claude Code (.mcp.json) and others take the same shape:

{
  "mcpServers": {
    "preo": {
      "type": "http",
      "url": "https://mcp.preo.dev/mcp"
    }
  }
}

Claude Code, from the terminal

claude mcp add --transport http preo https://mcp.preo.dev/mcp

MCP clients differ in where they keep this configuration and what they call it. If the snippets above do not match your version, check your client's own documentation — all it needs from us is the server URL, and every other detail is the client's.

Tools

These are the tools the server can expose. What your client actually sees is narrower: a tool only appears if you granted the permissions it needs and you have at least one event or organisation where it applies. Anything you did not grant is invisible, not merely refused.

Getting started

Tool What it does Needs Access
preo_whoami Who this token acts as, which scopes it was granted, and every organization and edition it can reach with their ids. Call this first — other tools need an edition_id (edt_...) or organization_id (org_...) from here. Read

Catalogue

Tool What it does Needs Access
preo_get_product Get one product by its id (prd_...), including variants, options, images, categories and pricing. catalog.read Read
preo_list_editions List the event editions this token can access. Returns edition ids (edt_...), names, dates, currency and timezone. Call this first to get an edition_id for other tools. catalog.read Read
preo_list_products List products in an edition — tickets, merchandise, food and drink. Requires an edition_id from preo_list_editions. Supports a free-text search. catalog.read Read

Sales

Tool What it does Needs Access
preo_get_order Get one order by its id (ord_...), including its payment transactions, the purchased items and the buyer. Get an order id from preo_list_orders. commerce.read Read
preo_get_refund_request Get one refund request by its id (refund_...), including its amount, status, reason, the purchase or transaction it refunds and who handled it. Ids come from preo_list_refund_requests. commerce.read Read
preo_list_orders List orders placed in an edition. Returns order ids (ord_...), order number, status, type (online / in-person / imported), total amount and the buyer's contact details. Requires an edition_id (edt_...) from preo_whoami or preo_list_editions. `search` matches order number, order id, customer email, customer phone and transaction id. commerce.read Read
preo_list_refund_requests List refund requests. Returns refund ids (refund_...), amount, status and the purchase or transaction being refunded. Pass an edition_id (edt_...) to narrow to one edition; without it every accessible edition is included. `status` filters on one of: requested, ready, processing, awaiting_gateway, processed, failed, rejected, invalid. commerce.read Read

Audience

Tool What it does Needs Access
preo_get_customer Get one customer by their id (usr_...), including contact details and their relationships to organizations and editions. Ids come from preo_list_customers, or from the buyer on an order returned by preo_get_order. audience.read Read
preo_list_campaigns List email and SMS campaigns targeted at an edition's audience. Returns campaign ids (cmp_...), name, channel, status, schedule and recipient counts. Requires an edition_id (edt_...) from preo_whoami or preo_list_editions. audience.campaign Read
preo_list_customers List the customers (buyers) of an edition. Returns customer ids (usr_...), name, email, phone and when they were last seen. Requires an edition_id (edt_...) from preo_whoami or preo_list_editions. `search` matches name, email, phone or customer id. This endpoint always pages at 100 rows, so `limit` only narrows how much you read. audience.read Read

On site & support

Tool What it does Needs Access
preo_get_support_conversation Get one support conversation by its id (tkt_...), including its contact, assignee, labels and linked records. Ids come from preo_list_support_conversations. ops.support Read
preo_list_support_conversations List customer-support conversations from the inboxes this token can reach. Returns conversation ids (tkt_...), subject, contact, assignee, priority, status and last activity. Narrow with an edition_id (edt_...) or an organization_id (org_...) from preo_whoami — with neither, every reachable inbox is included. `status` filters on one of: open, pending, resolved. ops.support Read

Event settings

Tool What it does Needs Access
preo_list_webhooks List webhook endpoints — the URLs Preo posts event notifications to. Returns endpoint ids (whe_...), target URL, subscribed events and whether the endpoint is active. Narrow with an edition_id (edt_...) or an organization_id (org_...) from preo_whoami; with neither, every reachable organization's endpoints are returned. edition.webhooks Read

Organisation

Tool What it does Needs Access
preo_get_organization Get one organization's configuration by its id (org_...): name, branding, email settings and, for managing-org operators, the advanced settings. Organization ids come from preo_whoami — there is no separate organization listing tool. org.settings Read
preo_list_consents List an organization's consent statements — the terms and opt-ins shown to customers at checkout. Returns consent ids (cns_...), title, type, scope and whether each is enabled and published. Requires an organization_id (org_...) from preo_whoami. org.consents Read

Reporting

Tool What it does Needs Access
preo_dashboard_summary Headline sales figures for one edition: total revenue, order count, items sold, average order value, and service and handling fees. Requires an edition_id (edt_...) from preo_whoami or preo_list_editions. Vendor participants have no analytics access and will be refused. analytics.read Read

Permissions

Preo has 33 permissions, the same ones that decide what a person can do in the backoffice. When you approve a client you tick the ones it may use, and they apply everywhere you already have that access — a token cannot reach an event you cannot reach yourself.

Catalogue

What you sell — tickets, merchandise, food and drink.

Permission What it lets a client do Grantable
catalog.delete Remove products and categories. Yes
catalog.edit Create and change products, ticket types and categories. Yes
catalog.import Import product data in bulk. Yes
catalog.read See your products, ticket types, categories and prices. Yes

Sales

Orders, payments and refunds.

Permission What it lets a client do Grantable
commerce.import Import orders that were sold somewhere else. Yes
commerce.read See orders, purchases and payments. Yes
commerce.refund Approve or reject refunds. Yes

Audience

Ticket holders, segments and campaigns.

Permission What it lets a client do Grantable
audience.campaign Create and send campaigns. Yes
audience.edit Change customer details and segments. Yes
audience.read See ticket holders and audience segments. Yes

On site & support

Scanning at the gate, bar and food sales, the support inbox.

Permission What it lets a client do Grantable
ops.onsite Use the on-site tools — bar and food sales, pickup points. Yes
ops.scan Scan tickets and act on a scanned purchase. Yes
ops.support Read and answer support conversations. Yes
ops.support_manage Run the support inbox — assign, close, configure. Yes

Event settings

The configuration of a single event edition.

Permission What it lets a client do Grantable
edition.fees Change the fees charged on an event. Yes
edition.permissions Change what individual staff members may do. Yes
edition.settings Change an event's own settings. Yes
edition.staff Decide who works on an event. Yes
edition.webhooks Manage the webhooks that push data to your other systems. Yes

Organisation

Everything that spans all of your events.

Permission What it lets a client do Grantable
org.consents Manage organisation-wide consent texts, such as terms and notices. Yes
org.editions Create new events. Yes
org.email Manage the emails your customers receive. Yes
org.files Manage uploaded files and images. Yes
org.hosted_stores Manage your online stores. Yes
org.service_accounts Create machine accounts and their credentials. Never
org.settings Change organisation-wide settings. Yes
org.staff Invite and manage the people in your organisation. Yes

Hosted organisations

Only applies if your organisation hosts others, such as vendors.

Permission What it lets a client do Grantable
managing.billing Bill the organisations you host. Yes
managing.features Turn features on and off for the organisations you host. Yes
managing.orgs Manage the organisations you host. Yes
managing.participants Decide which organisations take part in an event. Yes

Reporting

Dashboards, figures and data exports.

Permission What it lets a client do Grantable
analytics.export Export data out of Preo. Yes
analytics.read See dashboards, sales figures and reports. Yes

org.service_accounts can never be granted to an MCP client, however you approve it. Never handed to an AI client. Minting machine credentials would let a token issue itself another token and step outside the limits you set here.

How authorization works

You approve the connection once, in the Preo backoffice, while signed in as yourself — the client never sees your password and there is no key to paste. On that screen you choose which of the permissions above to hand over, and the resulting token is capped twice: by what you granted, and by your own access at the moment of every call. If your access is reduced later, the token shrinks with it.

You can revoke a connection at any time under Profile → Tokens in the backoffice; the client stops working immediately. Tokens also expire on their own, at which point the client asks you to approve again.