TicketPAY MCP
Eigener MCP-Server unter mcp-ticketpay. Read-only Zugriff auf TicketPAY Export-API (Base: https://tnapi.ticketpay.de).
Zweck: Vibe Factory. TicketPAY-Daten (Events, Orders, Tickets, Zahlungen) fuer Agent-Workflows und Reporting zugaenglich.
Tools (14 + Escape)
Umsatz & Zahlungen
list_orders→/exports/shop/orders(Quirk:/shop/im Pfad — siehe unten)list_transactions→/exports/transactionslist_cancellations,list_fees,list_donations
Events & Tickets
list_events,list_tickets,list_vouchers,list_event_campaigns,list_sold_articles(ein Wort)
Stammdaten
list_products,list_shops,list_employees,list_api_keys(Quirk:/api-key)
Escape: raw_get(path, params?)
Auth
TicketPAY erwartet API-Key im Authorization-Header ohne Bearer-Prefix — nur der Key-String. HTTPS-only.
Setup
cd ~/source/mcps/mcp-ticketpay
cp .env.local.example .env.local
# TICKETPAY_API_KEY=<key>
uv tool install --force --editable .
claude mcp add ticketpay -- ~/source/mcps/mcp-ticketpay/start.sh
# oder HTTP via http://127.0.0.1:8766/mcpAPI-Key beim Kunden im TicketPAY-Backend anlegen (URL: https://<shop>.ticketpay.de/backend → API-Key-Management).
Quirks & Stolperfallen (sehr wichtig)
-
Auto-Compact bei Response > 50KB (eingebaut 2026-05-03 nach Andre-Live-Test): Tool-Output wird automatisch kompaktiert wenn JSON > 50 KB. Items werden auf Top-Level-Primitives + ID/Status-Felder reduziert (
id, status, event_id, amount_cents, created_iso, ...), nested Dicts/Lists gedroppt, Strings > 200 Zeichen gecaped. Markiert mit_truncated: true. Hintergrund: TicketPAY-Tickets enthalten pro Item Personalisierungs-Daten + Adressen → 5 Tickets schnell 2 MB → Anthropic-Tool-Output-Limit ueberschritten. Volle Detail-Sicht: kleineressize=oderraw_getmit Field-Selection. -
Filter-Params direkt in den Volumen-Tools (eingebaut 2026-05-03):
list_tickets,list_transactions,list_fees,list_donations,list_sold_articlesakzeptierenfrom_,to,filter_by(Defaultcreated_iso— fuer „wann gekauft”, nicht „wann zuletzt geaendert”),event_id,shop_id,status(beilist_fees:fee_type). Plus zwei Token-Spar-Modi:count_only=Truereturnt nur{total, page, size};fields=["created_iso","price","status"]reduziert Items clientseitig. Hintergrund Q1-Vergleich am 2026-05-03: 6× ~1.5 MB pro Monatsblock nur umtotalrauszufischen — mitcount_onlyjetzt 6× ~50 Bytes. -
Authorization-Header ohneBearer-Prefix — nur der rohe Key. Abweichend von OAuth-Standards. -
/exports/shop/ordersstatt/exports/orders. Im MCP versteckt hinterlist_orders. -
page_size=1000loest sporadisch 502 Bad Gateway aus (Lessons Learned 2026-04-25). Vermutlich Cloud-Frontend-Throttle bei Backend-Druck. Stabil istpage_size=500und kleiner. Doku schweigt zu Limits. -
total: 10000Hard-Cap auf Volumen-Endpoints ohne Filter. Wer Tickets/Transactions/Fees ohnefrom/tozieht, bekommt nie mehr als 10.000 Records. Workaround: Date-Slicing in Monatsblöcken. Bei VF dadurch von 10k gecapt auf 38.501 Tickets, 13.452 Transactions, 68.265 Fees. -
page_size-Parameter wird teilweise ignoriert — Server liefert oft 1000 obwohl 200 angefragt. Pagination-Stop nicht auflen(items) == requested_page_sizeaufbauen. -
list_ordersliefert{"errormessage": "Unknown index"}(re-verifiziert 2026-04-25). Sowohl mitsize=100als auchsize=1000reproduzierbar. Sieht nach server-seitig fehlendem Index aus, nicht Auth/Param. Workaround: Order-Daten uebertp_transactions+tp_ticketsrekonstruieren oder TicketPAY-Support fragen. -
Sortier-Default ohne Filter ist chronologisch aufsteigend (aelteste zuerst).
list_tickets(page=1)liefert Tickets aus Account-Historie (bei VF: April 2019). Wer „aktuelle Tickets” will und nur das 10k-Cap nutzt, landet maximal in der Mitte. Konsequenz: Fuer aktuelle Sicht ist Date-Filter (from/to+filter_by=created_iso) Pflicht, auch unterhalb des Caps. Sortier-Reverse-Param ist nicht dokumentiert. -
Keine POST/PUT/DELETE — Export-API ist strikt read-only. Schreibendes muss ueber TicketPAY-Backend laufen.
Erweiterungen wenn gebraucht
- CSV-Export: laut Doku liefern einige Endpoints
.csvwenn Pfad entsprechend endet — bei Bedarf separates Tool ergaenzen. - Preregistration-API: derzeit nur via
raw_get. Wenn haeufig genutzt → eigene Tools.
Related
- mcp-ticketpay — Source
- papierkram, m365 — VF-Parallel-Stack
- API-Doku