Swarmtix Help Center
Tool Reference

swarmtix_discounts_list

Lists the discount offers set up on an event, with their codes, reductions, dates and usage

swarmtix_discounts_list

Lists the discount offers set up on one event, in alphabetical order by offer name, one page at a time. Each entry carries the offer's name, whether it takes a fixed amount or a percentage off and how much, the code that redeems it, the dates it runs between, and how many times it has been used against its limit.

This lists the active offers created by the authorizing organizer account, not every offer on the event. An offer a colleague set up, and one that has been deactivated, will not appear — even though both are real and a deactivated one may still be visible in the dashboard.

A code can therefore be missing from this list and still be accepted at checkout. swarmtix_discounts_check_code checks against the event, not against this list, so it is the tool to trust when the two disagree.

When you would reach for it

  • To audit what is live before a campaign goes out.
  • To see how much of a limited code is lefttimesUsed against usesLimit.
  • To find a code that has expired when a buyer says theirs was rejected.

To test one specific code rather than read the list, use swarmtix_discounts_check_code.

Scope

discounts:read

Reads your discount offers and their codes. Creating one needs discounts:write — a separate permission, because a discount is the one thing in this catalog that changes what a buyer pays.

Parameters

NameTypeRequiredDefaultDescription
eventstringYesThe event's id (a GUID) or its URL slug.
limitintegerNo50How many discount offers to return. 1 to 200.
cursorstringNoThe cursor from the end of a previous page. Omit to start at the beginning.

Example call

{
  "name": "swarmtix_discounts_list",
  "arguments": { "event": "spring-summit-2026" }
}

What comes back

[
  {
    "id": "a15c9e02-3b7d-4c61-8f95-6d24e0a7b3c8",
    "eventId": "8f14e45f-ceea-467a-9c3d-1b2a5f6e7d80",
    "name": "EARLYBIRD",
    "code": "EARLYBIRD",
    "discountType": "Coded Discount",
    "amountOff": 0,
    "percentageOff": 20,
    "currency": "EUR",
    "currencySymbol": "€",
    "timesUsed": 34,
    "usesLimit": 100,
    "unlimited": false,
    "startsImmediately": true,
    "startDate": "2026-08-01T09:00:00",
    "runsUntilSalesEnd": false,
    "endDate": "2026-09-30T23:59:00"
  },
  {
    "id": "cf3907b2-8d15-4e60-a479-13c85b0e6d2a",
    "eventId": "8f14e45f-ceea-467a-9c3d-1b2a5f6e7d80",
    "name": "PARTNER10",
    "code": "PARTNER10",
    "discountType": "Coded Discount",
    "amountOff": 10,
    "percentageOff": 0,
    "currency": "EUR",
    "currencySymbol": "€",
    "timesUsed": 7,
    "unlimited": true,
    "startsImmediately": true,
    "startDate": "2026-08-01T09:00:00",
    "runsUntilSalesEnd": false,
    "endDate": "2026-11-04T19:00:00"
  }
]
FieldWhat it is
idThe offer's id
eventIdThe event it belongs to
nameThe offer's name. Offers created through MCP are named after their code.
codeThe code a buyer types at checkout
discountTypeWhich kind of offer it is, as a phrase: "Coded Discount" (typed at checkout), "Public Discount" (advertised on the event page) or "Access Code" (unlocks hidden tickets). Offers created through MCP are always "Coded Discount".
amountOffA fixed reduction per ticket. 0 when the offer is a percentage.
percentageOffA percentage reduction per ticket. 0 when the offer is a fixed amount.
currencyThe currency amountOff is in, as its ISO 4217 code — "EUR", "USD"
currencySymbolThe symbol that renders it — "€", "$"
timesUsedHow many times the code has been redeemed
usesLimitThe redemption limit. Absent when the offer is unlimited.
unlimitedWhether the offer has no redemption limit
startsImmediatelyWhether it started as soon as it was created rather than on startDate
startDateWhen it starts being accepted
runsUntilSalesEndWhether it runs until ticket sales close rather than until endDate
endDateWhen it stops being accepted

Exactly one of amountOff and percentageOff carries the reduction; the other is 0. They are stored in one place with a flag saying which kind it is, so an offer cannot be both.

What happens when you call it

  1. The event identifier is resolved and the ownership checks run.
  2. limit is checked.
  3. The event's discount offers are fetched. The service behind this applies its own edit permission check, which is stricter than the read gate above, and its query narrows the rows twice more: to offers that are active, and to offers created by the authorizing organizer account.
  4. The list is sorted by offer name, case-insensitively, then by id.
  5. One page is cut, projected to the fields above, and serialized.

Troubleshooting

"Event not found, or this connection does not have access to it."

Three causes share this sentence here, one of which is specific to this tool:

  • The event does not exist.
  • It belongs to a different organisation than this connection covers.
  • The authorizing organizer can see the event but is not permitted to edit it. Discount setup is commercial configuration, and the service guards it with the same edit permission the dashboard applies. A team member with read-only access to an event gets this sentence, which is literally accurate: this connection does not have access to it.

If you can open the event but not its discounts in the dashboard either, that is the third case.

An offer you know exists is not in the list

Two causes, both of them the query narrowing the rows rather than anything being wrong:

  • It was created by a different organizer account. The list covers offers created by the account this connection authorizes as. swarmtix_whoami names it.
  • It has been deactivated. Only active offers are listed.

If you are checking whether a specific code works, use swarmtix_discounts_check_code — it asks the event, not this list.

usesLimit is missing from a row

The offer is unlimited. unlimited is true on the same row.

A code in the list is not working at checkout

Read the dates. An offer outside startDateendDate is rejected, as is one whose timesUsed has reached usesLimit. swarmtix_discounts_check_code tells you which of those it is, in a sentence.

Two offers share the same code

That is possible — creating a code twice produces two offers that both answer to it. Whichever the checkout matches first wins. Deactivate one in the dashboard; the MCP catalog has no delete tool.

"This connection is not authorized for discounts:read. Reconnect and grant it to use this tool."

Reconnect and approve discounts:read.

Use cases

  • Campaign audit before an email goes out
  • Budget control — how much of a limited code is left
  • Support — "why was my code rejected?" starts here
  • Season rollover — reading last year's offers before recreating them

On this page