Swarmtix Help Center
Tool Reference

swarmtix_events_create

Creates a new Swarmtix event as an unpublished draft and returns its id and URL slug

swarmtix_events_create

Creates a new event as an unpublished draft and returns its id and URL slug. The draft has a name and nothing else: no dates, no ticket types and no location, so it is not on sale and is not visible on the public site.

When you would reach for it

  • Starting an event from a brief — create the draft, then set its schedule and tickets with the other write tools.
  • Blocking out next season before the details are settled.

If a similar event already exists, swarmtix_events_duplicate is usually the better start: it carries the description, branding, location and host across.

Scope

events:write

Creates and changes events, ticket types, event dates and checkout questions. Everything it creates arrives as a draft. It cannot publish and it cannot delete.

Calling this twice creates two events. It is not idempotent and a client should not retry it blindly. If a call times out, list your events before calling again.

Parameters

NameTypeRequiredDefaultDescription
namestringYesThe name of the event. Up to 400 characters.
kindstringNo"physical"Whether the event happens at a venue or online. "physical" or "online".

There is deliberately no parameter for the organisation or the organizer. Both come from the access token. A tool that accepted an organisation id would let a caller holding a valid token for one organisation create an event inside another.

The 400-character limit on name is this tool's own rather than the database column's. A name is a label; anything longer is a description in the wrong field.

Example call

{
  "name": "swarmtix_events_create",
  "arguments": {
    "name": "Spring Summit 2027",
    "kind": "physical"
  }
}

What comes back

{
  "id": "3b6f81ce-04a2-4d97-b5e8-7c10924af3d6",
  "slug": "swt3b6f81ce04a24d97b5e87c10924af3d6",
  "name": "Spring Summit 2027",
  "published": false,
  "status": "NoEventStartDate",
  "organizationId": "e3a58c71-6b04-4d29-9f8e-2c71a05b4d63"
}
FieldWhat it is
idThe new event's id
slugIts URL slug — the identifier other tools accept
nameThe name as stored
publishedAlways false. Nothing in this catalog can make it true.
statusThe setup stage the draft has reached — see below
organizationIdThe organisation the event was created in

The slug is generated, not derived from the name

A new event's slug is an opaque swt… string, not a readable one made from the name. Pass it back to the other tools as-is; it works exactly like any other slug. Give the event a readable address in the dashboard when you publish it, since renaming an event's URL is not something MCP can do.

status is a checklist position, not the word "draft"

published is the field that says an event is not public. status says what the setup is still missing, and on a brand-new event it names the first missing piece:

kindstatus on a new draft
"physical"NoEventStartDate — it has no dates yet
"online"NoCategories — an online event needs its categories first

As you fill the event in, status moves along that checklist. It reaches Published only when a person publishes the event in the dashboard.

This record is read back from the stored row, not echoed from your arguments. "Everything lands as a draft" is only worth stating if it is observed — echoing the input back would report a draft whatever the database actually holds.

What happens when you call it

  1. name and kind are validated. Both are checked here rather than by the protocol layer, which publishes the schema but does not enforce it.
  2. A new event is created for the organisation and the organizer on the access token.
  3. The freshly written row is fetched back and the name you gave is applied to it. The creation step names an event after the day it was made and takes no name of its own, so this is the step that gives it yours.
  4. The stored row is read and checked: if it is not a draft, the tool refuses rather than reporting one it did not produce.
  5. The six fields above are returned, read from that row.

Step 3 is the reason the name is applied after creation rather than passed into it: the creation step names an event My event - <today's date> and accepts no name of its own. If a call fails between the two, the event exists under that placeholder name — which is what to look for in the dashboard.

What the draft does not have

No dates, no ticket types, no location, no description, no branding. The next calls are usually:

  1. swarmtix_event_dates_set — when it runs
  2. swarmtix_ticket_types_create — what is on sale
  3. swarmtix_checkout_questions_create — what buyers are asked
  4. swarmtix_discounts_create — any codes

The venue, description, branding and host details are filled in from the dashboard: editing an existing event's own record is not available through MCP.

Troubleshooting

"name is not valid: it was empty. Expected the name of the event."

name was missing or blank. It is required.

"name is not valid: it is 512 characters. Expected the name of the event, at most 400 characters."

Shorten the name. It is refused rather than cut, because a name silently trimmed at the limit is a write you did not ask for and cannot see.

"kind is not valid: "hybrid" is not a kind of event. Expected "physical" or "online"."

kind takes exactly two values. Omit it for a physical event.

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

Reconnect and approve events:write.

"Swarmtix created this event but it is not a draft, and this connection only creates drafts. The event is in the Swarmtix dashboard; unpublish or delete it there."

The event was created, but the stored row came back published. This should not happen, and the tool refuses to report it as a draft rather than tell you something untrue. The event exists — find it in the dashboard and unpublish or delete it, then tell support.

"Swarmtix could not complete this request. Nothing was changed."

The creation failed. Nothing partly applied, so calling again is safe.

You called it twice and now have two drafts

Expected — the tool is not idempotent. Delete the spare in the dashboard; there is no delete tool here.

There is a draft called "My event - 14-01-2027" in your dashboard

That is the placeholder name the creation step assigns before yours is applied. A draft still wearing it is one where the call did not finish. Rename or delete it in the dashboard.

Use cases

  • Event from a brief — paste a description, get a draft with tickets priced
  • Placeholder for next season, filled in later
  • Online event scaffoldingkind: "online" from the start
  • Batch setup — one draft per city, each named and scheduled by follow-up calls

On this page