{"openapi":"3.1.0","info":{"title":"pretix Event Config (BYOK) API","version":"0.1.0","description":"pretix Event Config (BYOK) lets an AI assistant read your own pretix Event Config data through the pretix Event Config API with a key you supply (pretix team API token). Read-only: 9 tools (list_categories, list_questions, list_question_options, list_tax_rules, list_discounts, list_item_variations, list_item_bundles, list_item_addons, list_item_meta_properties). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-pretix-event-config.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-pretix-event-config/docs"},"termsOfService":"https://connectorbay.com/byok-pretix-event-config/terms"},"servers":[{"url":"https://byok-pretix-event-config.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-pretix-event-config/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_categories":{"post":{"operationId":"list_categories","summary":"List an event's product categories with name, position, whether they hold add-ons and cross-selling settings. Use for \"W","description":"List an event's product categories with name, position, whether they hold add-ons and cross-selling settings. Use for \"What product categories does the pretix event sampleconf have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organizer":{"description":"Organizer slug (the short name in the pretix URL), for example 'bigevents'.","maxLength":200,"title":"Organizer","type":"string"},"event":{"description":"Event slug within the organizer, for example 'sampleconf'.","maxLength":200,"title":"Event","type":"string"},"is_addon":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only add-on categories, false for only normal ones.","title":"Is Addon"},"ordering":{"anyOf":[{"enum":["position","-position","id","-id"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order: position or -position or id or -id; prefix a field with - for descending.","title":"Ordering"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 50 results; the answer includes the total count.","title":"Page"}},"required":["organizer","event"],"title":"list_categoriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_questions":{"post":{"operationId":"list_questions","summary":"List the questions asked at checkout or check-in: label, answer type, required flag, assigned product ids and choice opt","description":"List the questions asked at checkout or check-in: label, answer type, required flag, assigned product ids and choice options. Use for \"Which questions does the pretix event sampleconf ask buyers\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organizer":{"description":"Organizer slug (the short name in the pretix URL), for example 'bigevents'.","maxLength":200,"title":"Organizer","type":"string"},"event":{"description":"Event slug within the organizer, for example 'sampleconf'.","maxLength":200,"title":"Event","type":"string"},"required":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only required questions, false for only optional ones.","title":"Required"},"ask_during_checkin":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only questions asked at check-in, false for only those asked at purchase.","title":"Ask During Checkin"},"identifier":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only the question with this identifier string.","title":"Identifier"},"ordering":{"anyOf":[{"enum":["position","-position","id","-id"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order: position or -position or id or -id; prefix a field with - for descending.","title":"Ordering"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 50 results; the answer includes the total count.","title":"Page"}},"required":["organizer","event"],"title":"list_questionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_question_options":{"post":{"operationId":"list_question_options","summary":"List the answer options of one choice question (types C or M) with identifier and displayed text. Use for \"What answer o","description":"List the answer options of one choice question (types C or M) with identifier and displayed text. Use for \"What answer options does question 3 of pretix event sampleconf offer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organizer":{"description":"Organizer slug (the short name in the pretix URL), for example 'bigevents'.","maxLength":200,"title":"Organizer","type":"string"},"event":{"description":"Event slug within the organizer, for example 'sampleconf'.","maxLength":200,"title":"Event","type":"string"},"question":{"description":"Numeric id of a choice question (from list_questions), for example 3.","title":"Question","type":"integer"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 50 results; the answer includes the total count.","title":"Page"}},"required":["organizer","event","question"],"title":"list_question_optionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_tax_rules":{"post":{"operationId":"list_tax_rules","summary":"List an event's tax rules with name, rate in percent, tax code, whether prices include tax and the default flag. Use for","description":"List an event's tax rules with name, rate in percent, tax code, whether prices include tax and the default flag. Use for \"Which tax rules does the pretix event sampleconf use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organizer":{"description":"Organizer slug (the short name in the pretix URL), for example 'bigevents'.","maxLength":200,"title":"Organizer","type":"string"},"event":{"description":"Event slug within the organizer, for example 'sampleconf'.","maxLength":200,"title":"Event","type":"string"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 50 results; the answer includes the total count.","title":"Page"}},"required":["organizer","event"],"title":"list_tax_rulesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_discounts":{"post":{"operationId":"list_discounts","summary":"List an event's automatic discount rules: conditions (minimum count or value), benefit percentage, validity window and s","description":"List an event's automatic discount rules: conditions (minimum count or value), benefit percentage, validity window and sales channels. Use for \"Which automatic discounts does the pretix event sampleconf have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organizer":{"description":"Organizer slug (the short name in the pretix URL), for example 'bigevents'.","maxLength":200,"title":"Organizer","type":"string"},"event":{"description":"Event slug within the organizer, for example 'sampleconf'.","maxLength":200,"title":"Event","type":"string"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only active discounts, false for only inactive ones.","title":"Active"},"ordering":{"anyOf":[{"enum":["position","-position","id","-id"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order: position or -position or id or -id; prefix a field with - for descending.","title":"Ordering"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 50 results; the answer includes the total count.","title":"Page"}},"required":["organizer","event"],"title":"list_discountsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_item_variations":{"post":{"operationId":"list_item_variations","summary":"List the variations of one product (for example sizes or ticket levels) with name, price, active flag, sale window and a","description":"List the variations of one product (for example sizes or ticket levels) with name, price, active flag, sale window and approval or membership requirements. Use for \"What variations does product 1 of pretix event sampleconf have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organizer":{"description":"Organizer slug (the short name in the pretix URL), for example 'bigevents'.","maxLength":200,"title":"Organizer","type":"string"},"event":{"description":"Event slug within the organizer, for example 'sampleconf'.","maxLength":200,"title":"Event","type":"string"},"item":{"description":"Numeric id of the product (from the items list of the pretix connector or from a question's items field), for example 1.","title":"Item","type":"integer"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only active variations, false for only inactive ones.","title":"Active"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Substring of the variation name.","title":"Search"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 50 results; the answer includes the total count.","title":"Page"}},"required":["organizer","event","item"],"title":"list_item_variationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_item_bundles":{"post":{"operationId":"list_item_bundles","summary":"List the bundle configuration of one product: which other product is included, how many and the designated price used fo","description":"List the bundle configuration of one product: which other product is included, how many and the designated price used for tax splitting. Use for \"Which products are bundled into product 1 of pretix event sampleconf\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organizer":{"description":"Organizer slug (the short name in the pretix URL), for example 'bigevents'.","maxLength":200,"title":"Organizer","type":"string"},"event":{"description":"Event slug within the organizer, for example 'sampleconf'.","maxLength":200,"title":"Event","type":"string"},"item":{"description":"Numeric id of the product (from the items list of the pretix connector or from a question's items field), for example 1.","title":"Item","type":"integer"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 50 results; the answer includes the total count.","title":"Page"}},"required":["organizer","event","item"],"title":"list_item_bundlesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_item_addons":{"post":{"operationId":"list_item_addons","summary":"List the add-on rules of one product: which category add-ons can be chosen from, minimum and maximum number and whether ","description":"List the add-on rules of one product: which category add-ons can be chosen from, minimum and maximum number and whether they are free. Use for \"Which add-ons can be chosen with product 1 of pretix event sampleconf\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organizer":{"description":"Organizer slug (the short name in the pretix URL), for example 'bigevents'.","maxLength":200,"title":"Organizer","type":"string"},"event":{"description":"Event slug within the organizer, for example 'sampleconf'.","maxLength":200,"title":"Event","type":"string"},"item":{"description":"Numeric id of the product (from the items list of the pretix connector or from a question's items field), for example 1.","title":"Item","type":"integer"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 50 results; the answer includes the total count.","title":"Page"}},"required":["organizer","event","item"],"title":"list_item_addonsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_item_meta_properties":{"post":{"operationId":"list_item_meta_properties","summary":"List the item meta properties defined for an event (internal key-value fields attached to products) with default and all","description":"List the item meta properties defined for an event (internal key-value fields attached to products) with default and allowed values. Use for \"Which item meta properties does the pretix event sampleconf define\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organizer":{"description":"Organizer slug (the short name in the pretix URL), for example 'bigevents'.","maxLength":200,"title":"Organizer","type":"string"},"event":{"description":"Event slug within the organizer, for example 'sampleconf'.","maxLength":200,"title":"Event","type":"string"}},"required":["organizer","event"],"title":"list_item_meta_propertiesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}