eventtia-mcp
Eventtia helps event teams manage private events, attendees, payments, sessions, workshops, checkpoints, and reporting.
Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeRead-only
What it can do
- ListAttendeeTypeCustomFields: Returns the form fields configured for an attendee type. Default fields (`first_name`, `email`, etc.) and custom fields are both included. **Filters:** by default returns
- CreateAttendeeTypeCustomField: Creates a new custom field on an attendee type. Required: `name`, `input_type`. **Multiple-choice inputs** (`select`, `checkbox`, `radio`) require `values` as a JSON arr
- UpdateAttendeeTypeCustomField: Updates an existing custom field. Default fields support a restricted set of mutations (only `required`, `display`, `allow_duplicate_values` for `email`, `min_age` for `
What data it sees
Do you need an account
No: the server works without sign-in
Eventtia helps event teams manage private events, attendees, payments, sessions, workshops, checkpoints, and reporting.
Server tool list (49)
Raw names from tools/list. Only developers need these.
| listAttendeeTypeCustomFields | Returns the form fields configured for an attendee type. Default fields (`first_name`, `email`, etc.) and custom fields are both included. **Filters:** by default returns only active fields (`archived: false`, `draft: false`). Override with `?archived=true|all` and `?draft=true|all`. |
| createAttendeeTypeCustomField | Creates a new custom field on an attendee type. Required: `name`, `input_type`. **Multiple-choice inputs** (`select`, `checkbox`, `radio`) require `values` as a JSON array. Each value must be a non-empty string without commas (the legacy storage uses comma-separated serialization). **`terms_conditions`** input requires `terms_url`. File uploads are not supported via API — the server always forces `terms_mode=url`. Default fields cannot be created via this endpoint (they are auto-created with the AttendeeType). |
| updateAttendeeTypeCustomField | Updates an existing custom field. Default fields support a restricted set of mutations (only `required`, `display`, `allow_duplicate_values` for `email`, `min_age` for `birthdate`). |
| listAttendeeTypes | Returns a paginated list of attendee types for an event. Only non-archived, non-draft types are returned. |
| createAttendeeType | Creates a new attendee type. Required fields: `name` and `limit`. |
| getAttendeeType | Returns a single attendee type by ID. |
| updateAttendeeType | Updates an existing attendee type. Only provided fields are modified. |
| listAttendeeTypeGroupLimits | Returns per-group capacity limits for an attendee type. |
| getAttendeeTypeFormSchema | Returns the ordered list of form fields the admin uses to create an Attendee of this AttendeeType. Includes default fields (first_name, email, etc.) and custom fields. Includes admin-only fields. Skips fields with display=false. |
| listAttendees | Returns a paginated list of attendees for a given event. By default only non-archived, non-draft, non-rejected attendees are returned. Use the filter query parameters to change this scope. |
| createAttendee | Registers a new attendee for the event. The payload is wrapped under the `attendee` key. **Required fields:** `first_name`, `last_name`, `email`, `attendee_type_id`. (`email` may be skipped only when the selected `attendee_type` has `email_required` disabled; default is required.) If a draft attendee already exists for the same email + event it is promoted; otherwise a new attendee is created and registered. An optional top-level `coupon_code` is applied after a successful registration. **Precondition:** registration must be enabled for the event; otherwise the request fails with `422 "Registration for this event is not enabled"`. Side effect: may send the event's welcome email to the attendee's own inbox, if the attendee type has welcome emails enabled and the registration is not left as a draft. |
| getAttendee | Returns a single attendee scoped to the event by its `attendee_uuid`. Cached for 5 minutes. |
| updateAttendee | Updates the profile of an existing attendee. Payload is wrapped under the `attendee` key. Only provided fields are modified. Side effect: may send the event's welcome email to the attendee's own inbox, if the attendee type has welcome emails enabled and the email had not been sent yet. |
| confirmAttendee | Confirms a pending attendee registration. Sets `confirmed = true` and records the confirming user. Side effect: confirming is what triggers the event's welcome/confirmation email to the attendee's own inbox, if the attendee type has welcome emails enabled. Sent mail cannot be recalled. |
| rejectAttendee | Rejects an attendee registration. Archives the attendee if previously confirmed and unchecks-in if checked in. Side effect: sends a rejection email to the attendee's own inbox. Sent mail cannot be recalled. |
| getAttendeeEventCheckin | Returns the event-level check-in status of an attendee. Indicates whether the attendee has checked in to the event and, if so, the check-in timestamp converted to the event's local timezone (format: YYYY-MM-DD HH:MM:SS). |
| listAttendeeCheckpointCheckins | Returns a paginated list of checkpoint check-in logs for an attendee. Each log records an entry (and optional exit) at a named checkpoint. Includes the checkpoint name, entry timestamp, and checkout status. Logs are ordered by creation time descending (most recent first). The response includes `total_entries` for the unfiltered count. |
| listAttendeeWorkshopCheckins | Returns a paginated list of workshop check-ins for an attendee. Only includes workshops where the attendee has an active registration AND has physically checked in (checked_in = true). Results are ordered by check-in date descending (most recent first). The response includes `total_entries` for the unfiltered count. |
| resendAttendeeEmail | Resends the welcome/confirmation email to a confirmed attendee. Returns 422 if the attendee is not eligible (draft, archived, unconfirmed, missing email, no attendee_type, or unpaid when payment is required). |
| createCheckpoint | Creates a new checkpoint for the given event. Requires `create_checkpoints` permission. Fails with 422 if: - `name` or `checkpoint_type` are missing - The event has exceeded its checkpoint plan limit |
| updateCheckpoint | Updates an existing checkpoint. Requires `edit_checkpoints` permission. Only fields included in the request body are updated. |
| deleteCheckpoint | Soft-deletes a checkpoint by setting `archived: true`. Requires `delete_checkpoints` permission. The checkpoint is no longer returned in listings but is not removed from the database. **⚠️ DESTRUCTIVE OPERATION** LLM/MCP clients MUST obtain explicit end-user confirmation before invoking: present the target resource with user-recognizable identifiers and receive an affirmative response. Confirmation MUST NOT be inferred from dialogue or context. |
| searchCities | Case-insensitive substring search over the global `cities` catalog. Useful to resolve a human-readable location into a numeric `city_id` before creating an offline or mixed event. Each result is preloaded with its `region` and `country` to avoid N+1 queries on the caller side. **Behavior:** - Matches `name LIKE "%q%"` (substring, case-insensitive in MySQL `utf8_general_ci`). - Wildcards `%` and `_` in `q` are escaped — no client-side wildcard matching. - Optional `country_iso_code` narrows results to a single country (case-insensitive). - Results are ordered by `name ASC`. - Capped at **20 results** (no pagination — refine the query instead). - Response is cacheable for 30 minutes (`Cache-Control: public, max-age=1800`). **Rate limit:** 100 requests/minute per IP (600 for whitelisted IPs). |
| listEvents | Returns a paginated list of events belonging to the authenticated user's account. Events are filtered by the user's security access level and account scope. Archived events are excluded automatically. **Sorting:** Use the `order` parameter to sort results. Format: `column_name direction` (e.g., `start_date desc`, `name asc`). Supports up to two sort fields separated by comma. **Pagination:** Default page size is 24 (max 24). Use `page[number]` and `page[size]` to control pagination. **Caching:** Responses are cached for 1 minute. **Rate limit:** 100 requests/minute per IP (600 for whitelisted IPs). |
| createEvent | Creates a new event in the authenticated user's account. **Attendance mode rules:** - `offline`: Requires `city_id`. Timezone derived from the city. - `online`: Requires `virtual_timezone`. No `city_id` needed. - `mixed`: Requires both `city_id` and `virtual_timezone`. Dates must be sent as `dd/mm/yyyy - HH:MM`. |
| getEvent | Returns the details of a single event by its UUID. Authentication is optional. When unauthenticated, only non-archived public events are returned. |
| updateEvent | Updates an existing event. Only the provided fields are modified. |
| getEventModules | Returns boolean flags indicating which modules (activities, checkpoints) are enabled for the event. |
| getEventSummary | Returns lightweight aggregated metrics for an event: attendee totals (active, confirmed, checked-in, drafts, rejected), date range with timezone, per-attendee-type seat usage, and top 5 workshops by check-in count. All counts are computed with grouped SQL queries (no N+1) regardless of the number of attendee types or workshops. **Caching:** Responses are cached for 1 minute. |
| listEventCustomFields | Returns the account-level custom field definitions applicable to every event in the authenticated user's account. This endpoint is **account-scoped**, not event-scoped: it takes no `uuid` path parameter. The `id` of each definition (cast to string) is the key expected inside `custom_fields_data` on `createEvent` / `updateEvent`. Only active fields are returned (`archived: false`, `draft: false`), ordered by `order` ASC. **Caching:** Responses are cached for 30 minutes. |
| listPayments | Returns the payments (deposits and charges) for a given attendee. |
| createPayment | Creates a manual deposit payment for an attendee. Internally calls `Payment.manual_payment(attendee, params, current_user)` with operation_type set to `deposit`. |
| deletePayment | Deletes a deposit payment. Only payments with `operation = deposit` are deletable. |
| listSessions | Returns the sessions (concrete time-slots) registered under a WorkshopDefinition. |
| createSession | Creates a new session (Workshop slot) under a WorkshopDefinition. Required fields: `start_date` and `end_date`. The session inherits the WorkshopDefinition's name/description. Streaming, chat, Zoom and related integrations are not configurable via this API. **Precondition:** the event must have multiple sessions enabled; otherwise the request fails with `422 "You cannot create a workshop session because multiple sessions are disabled for this event."`. A workshop's first session is created through `createWorkshop` (via `workshops_attributes`). |
| getSession | Returns a single workshop session by GUID. |
| updateSession | Updates an existing workshop session. Only the provided fields are modified. Streaming, chat, Zoom and related integrations are not configurable via this API. |
| destroySession | Performs a destructive mutation to transition a workshop session state to 'archived'. - **Cascade Behavior:** Atomically tearing down all related active enrollment fixtures. - **Idempotency:** Non-idempotent lookup; subsequent DELETE operations on the same GUID scope will resolve to a 404 response. **⚠️ DESTRUCTIVE OPERATION** LLM/MCP clients MUST obtain explicit end-user confirmation before invoking: present the target resource with user-recognizable identifiers and receive an affirmative response. Confirmation MUST NOT be inferred from dialogue or context. |
| enrollAttendeeInSession | Enrolls an attendee in a specific workshop session. This endpoint safely handles concurrent requests to prevent overbooking and automatically recomputes related attendee charges. ### Validation Rules * **Availability:** Checks seat capacity and enforces per-attendee-type limits. * **Scheduling:** Prevents double-enrollment and time overlaps with other registered sessions. * **Timeline:** Ensures the booking deadline has not passed. |
| unenrollAttendeeFromSession | Removes an attendee's enrollment from a specific workshop session. ### Key Effects * **Participation:** Cancels the attendee's registration for this session. * **Charges:** Triggers an automatic recomputation of the associated attendee charges. **⚠️ DESTRUCTIVE OPERATION** LLM/MCP clients MUST obtain explicit end-user confirmation before invoking: present the target resource with user-recognizable identifiers and receive an affirmative response. Confirmation MUST NOT be inferred from dialogue or context. |
| listSpeakers | Returns a paginated list of speakers for an event. By default only non-archived, non-draft speakers are returned. Use `?archived=true` to list only archived speakers, or `?archived=all` to include both. |
| createSpeaker | Creates a new speaker. Required field: `name`. Image fields (`picture`, `banner`) are not supported via this API. The `attendee` association is not exposed in this version. |
| getSpeaker | Returns a single speaker by ID, scoped to the event. |
| updateSpeaker | Updates an existing speaker. Only provided fields are modified. Image fields (`picture`, `banner`) are not supported via this API. The `attendee` association is not exposed in this version. |
| listWorkshops | Returns a paginated list of workshop definitions for an event. Excludes archived, sponsor-owned and empty (no active sessions) definitions by default. |
| createWorkshop | Creates a new workshop definition together with at least one session (`workshops_attributes`). Required fields: `name` (multilingual hash) and `workshops_attributes` (non-empty). Image fields (`banner_image`, `background_image`) are not supported via this API. |
| getWorkshop | Returns a single workshop definition by GUID. |
| updateWorkshop | Updates a workshop definition. Only `name` and `description` (multilingual) are accepted; nested `workshops_attributes` is ignored on update. |
| getWorkshopStats | Returns used seats and check-in counts for a single workshop session. `guid` is the workshop session GUID (the same GUID used by `getWorkshop`), not the workshop definition GUID. |