io.seamlessevents.mcp/confbuilder · v1.0.0 · communication
ConfBuilder is healthy: it completed an MCP handshake in 2124 ms and exposes 76 tools.
ConfBuilder tools: events, speakers, sponsors, attendees, schedules, content, news, polls, chat.
Endpoint: https://mcp.seamlessevents.io/mcp (streamable-http)
No repository listed · Website · JSON · Add to my inventory
| Users (last 30 days) | 0 |
| Handshake | Healthy |
| Auth needed | None |
| Tool count | 76 |
| Latency | 2124 ms |
| Last checked (UTC) | 2026-10-16T18:00:45.500Z |
| Checked (UTC) | Status | Latency | Error |
|---|---|---|---|
| 2026-10-16T18:00:45.500Z | Healthy | 2124 | |
| 2026-10-16T18:00:45.407Z | Healthy | 1596 | |
| 2026-10-15T11:50:10.673Z | Healthy | 1047 |
request_login_code | Email a 6-digit sign-in code to the user's address. The user reads the code from their inbox and gives it back to you; then call verify_login_code. Use this whenever an API tool returns 'Not authorized'. |
verify_login_code | Complete login with the 6-digit code from request_login_code. Returns an API token the user must set as their client's authorization header (this server keeps no per-session state). Token is valid for 7 days. |
me | Profile of the logged-in user (id, name, email, team_ids), via the Authorization header token. |
list_teams | List the user's teams (id + name). Use a team_id when creating an event. |
find_events | Find events the user can access. Optional free-text query `q`. Returns id/title/dates — chain the id into other tools. |
get_event | Get one event by id (full detail: modules, speakers, sponsors, schedules). |
get_event_modules | List an event's modules with their enabled state (speaker, schedule, content, attendee, app). |
toggle_event_module | Enable or disable an event module. module_id is one of 'speaker', 'schedule', 'content', 'attendee', 'app'. Disabling hides the module for the event's users without deleting anything. |
list_event_members | List the people with direct access to an event: user_id, name, email, role ('event:admin'/'event:editor'/'event:viewer'/'speaker'), invitation status ('active'/'pending'). |
invite_event_member | Invite someone to an event by email — the account is created for them if they don't have one, and they get an invitation email. role: 'admin' (full control), 'editor' (manage content; default) or 'viewer' (read-only). |
update_event_member | Change a member's role: 'admin' (full control), 'editor' (manage content) or 'viewer' (read-only). Get user_id from list_event_members. The event creator cannot be demoted. |
remove_event_member | Remove a member's access to an event (their speaker links are not affected). Get user_id from list_event_members. |
accept_event_invitation | Accept the logged-in user's own pending invitation to an event (activates their membership). Use when the user says 'accept my invite to <event>'. |
list_speakers | List speakers for an event (paginated). Optional form_type filter, e.g. 'speaker-intake' or 'call-for-speakers'. |
get_speaker | Get one speaker by id (bio, talk title, headshot, logos, links). |
create_speaker | Create a speaker for an event. Requires first_name, last_name, email. The speaker is coupled to the event; image files can be added later with upload_speaker_image. |
update_speaker | Update a speaker. Pass only the fields to change (snake_case names). For images use upload_speaker_image instead of headshot/company_logo. Set website_card_approved / promo_card_approved true to publish the speaker's cards to the website walls. |
upload_speaker_image | Upload an image for a speaker and attach it to a slot (headshot, company_logo or company_logo_white). `source` is a public image URL (fetched by this server, e.g. Drive link or website) or a base64 data URL. Replaces any existing image in that slot. Ask the user whether to auto-crop the image to a f |
delete_speaker | Delete a speaker from an event. Permanent — removes their talk links, content and images. |
send_speaker_login_link | Email a speaker a passwordless sign-in link for the ConfBuilder app (their account is created if needed). Use when the user asks to send a speaker their login / access link; confirm the speaker before sending. |
list_sponsors | List sponsors for an event (paginated). Optional free-text query `q`. |
get_sponsor | Get one sponsor by id (company info, contacts, logos, status). |
create_sponsor | Create a sponsor for an event. Requires company_name and sponsor_type (a sponsor category — pick from list_sponsor_categories, e.g. 'gold_sponsor'; custom values are also fine and become available event-wide). Primary contact name/email recommended. Logos are uploaded separately later. |
delete_sponsor | Delete a sponsor from an event. Permanent — removes their logo, links and card images. |
list_sponsor_categories | List the sponsor categories available for create_sponsor/update_sponsor. Defaults (e.g. 'gold_sponsor') plus any custom categories already in use on the event when event_id is given. |
update_sponsor | Update a sponsor. Pass only the fields to change (snake_case names). sponsor_type takes a category value from list_sponsor_categories. primary_contact_email is frozen by the API (it owns the sponsor account). Set website_card_approved / promo_card_approved true to publish the sponsor's cards to the |
upload_sponsor_image | Upload a logo for a sponsor and attach it to a slot (company_logo, company_logo_white, company_logo_vector or company_logo_white_vector). `source` is a public image URL (fetched by this server, e.g. Drive link or website) or a base64 data URL. Replaces any existing logo in that slot. |
list_schedules | List schedules (tracks) for an event. |
get_schedule | Get one schedule by id (with its activities). |
create_schedule | Create a schedule (track) for an event. Optional name (default 'Event Schedule'), schedule_type (default 'detailed') and location. |
update_schedule | Update a schedule (track): name, schedule_type or location. Activities are managed separately. |
delete_event | Delete an event (removes it from listings; payments preserved for audit). |
publish_schedule | Publish a schedule (track): snapshots the current draft into a new version — that snapshot is what the app and website render. Publish again after edits. |
delete_schedule | Delete a schedule (track) and all its activities and versions. |
list_activities | List activities (sessions/talks) in one schedule. |
create_activity | Create a session (activity) in a schedule. Requires title; optional dates/times (ISO, e.g. start_date 2025-09-21, start_time 10:00:00), description, location, notes, and speaker_ids/sponsor_ids to link speakers or sponsors to the session. |
update_activity | Update a session (activity). Pass only the fields to change; setting speaker_ids/sponsor_ids replaces the linked speakers/sponsors. |
delete_activity | Delete an activity (session) from a schedule. |
set_promo_config | Create or update an event's card design config (upsert by event_id + promo_type). promo_type: 'website' (speaker website cards), 'sponsor-website' (sponsor website cards), 'promo' / 'sponsor-promo' (social share cards). Pass either `preset` (a name from list_card_presets) or `config` (the card-desig |
get_promo_config | Get an event's card design config. Optional promo_type filter ('website', 'sponsor-website', 'promo', 'sponsor-promo'); without it returns the event's first config. |
list_card_presets | List the built-in card design presets (port of the frontend card-builder starters). Pass a preset name to set_promo_config's `preset` param. |
set_form_config | Create or update an event's intake form config (upsert by event_id + form_type). form_type: 'speaker-info', 'sponsor-info' or 'call-for-speakers'. `config` is the form-builder JSON: {fields: [{id, label, type, enabled, required, options, helpText, sectionStart, maxWords}], metadata: {title, subtitle |
get_form_config | Get an event's intake form config (fields + metadata). Optional form_type filter ('speaker-info', 'sponsor-info', 'call-for-speakers'); without it returns the first config. |
get_website | Get an event's website-builder state: config (the section/theme draft JSON), slug (claimed address, e.g. summit2026 gives summit2026.confbuilder.com), publishedConfig + publishedAt (what is live). config null = website not started. |
save_website | Save an event's website-builder draft. `config` is the website-builder JSON (sections + theme — best obtained by reading get_website and editing it, or by asking the user for what they want built). Optional `slug` claims or renames the site address (3–40 chars: lowercase letters, numbers, hyphens; c |
publish_website | Publish an event's website: snapshots the current draft live (what visitors see). Requires a saved config and a claimed slug — save_website first. Publish again after further edits in the builder to ship them. |
check_website_slug | Check whether a website-builder slug (the subdomain label, 3–40 lowercase letters/numbers/hyphens) is valid and available, e.g. before save_website claims it. |
list_marketing_posters | List an event's saved marketing posters (poster grids of speaker/sponsor/attendee cards, newest first). |
create_marketing_poster | Create a saved marketing poster (a grid of cards for the Marketing Builder). kind fixes the entity type: 'speakers', 'sponsors' or 'attendees'. entity_ids are the ids of the entities to show on the poster (get them from list_speakers/list_sponsors/list_attendees). cols_desktop/cols_mobile are grid c |
update_marketing_poster | Update a marketing poster. Pass only the fields to change: name, entity_ids (replaces the poster's cards), cols_desktop, cols_mobile, png_cols, card_urls. kind is fixed at creation and cannot change — create a new poster for a different entity type. |
delete_marketing_poster | Delete a marketing poster by id. |
list_content | List an event's content items (slides, documents, assets) — or one entity's content only: pass entity_type ('speaker', 'sponsor' or 'schedule') + entity_id. |
upload_entity_content | Attach a content file (slide deck, video, image, PDF…) to a speaker, sponsor or schedule. entity_type picks which. `source` is a public URL (fetched by this server) or a base64 data URL. name is a label shown in the app, e.g. 'presentation' or 'previous_talk'. |
archive_entity_content | Archive (or unarchive) an entity's content item by document id. Archived content is hidden from the app but kept (content has no hard delete). Get document ids from list_content. |
list_news | List news items for an event. |
create_news | Post a news item to an event's news feed (organisers). notify=True (default) also push-notifies everyone linked to the event. |
list_polls | List polls for an event (open polls with anonymous results; include_closed=True to see closed ones too). |
create_poll | Create a poll for an event's audience. Requires a question and at least two options (e.g. options ['Yes', 'No']). Voting is anonymous; results tally is returned with the poll. |
list_chat_messages | List chat messages for an event-wide channel (oldest last). Optional `peer` for a DM thread, `after` ISO timestamp to poll for new messages. |
list_chat_conversations | List the logged-in user's DM threads for an event (one row per peer, latest message first). Pass a conversation's peerId to list_chat_messages as `peer` to read the full thread. |
send_chat_message | Send a chat message to an event's chat channel (as the logged-in user). Optional peer_user_id sends a direct message to that user instead of the event-wide channel. |
delete_chat_message | Delete a chat message (your own; organisers can delete any). |
list_notifications | List the logged-in user's notifications across their events (newest first): id/title/body/data/read + unread_count. Pair with mark_notification_read when the user asks to catch up. |
mark_notification_read | Mark one of the user's notifications as read (get ids from list_notifications). |
get_my_labels | Get the logged-in user's areas-of-interest labels for an event (e.g. ['AI', 'Fintech']) — what they're interested in / following there. |
set_my_labels | Replace the logged-in user's areas-of-interest labels for an event (the full list replaces the old one — read with get_my_labels first and keep what they want to keep). |
list_attendees | List attendees for an event (paginated). Optional `search` by name/email, `state` filter (e.g. 'complete'). |
get_attendee | Get one attendee by id (profile, ticket, check-in state). |
check_in_attendees | Check in attendees in bulk. attendee_ids are ids from list_attendees. |
void_attendee | Void an attendee's ticket (mark it invalid). resell=True also frees the ticket-type capacity so the ticket can be sold again; default keeps it consumed. |
update_attendee | Update an attendee's details. Pass only the fields to change (first_name, last_name, email, phone_number, company_name, job_title). |
create_event | Create an event. Requires title, start_date and end_date (ISO 8601, e.g. 2025-09-21T09:00:00Z) and team_id (get from list_teams). location optional. |
update_event | Update an event. Pass only the fields to change (title, start_date, end_date, location, website). The event image is set with set_event_image. |
set_event_image | Upload an image for an event (e.g. hero/banner) and set it as the event's eventImage. `source` is a public image URL (fetched by this server, e.g. Drive link or website) or a base64 data URL. Replaces any existing image. |
create_checkout | Start a checkout that pays for upgrading an event (speaker module) via Polar. Returns the hosted checkout URL — give it to the user to open and pay; the upgrade activates automatically once payment completes. No tool exists to check payment status — ask in the Polar billing portal instead. |
get_billing_portal_url | Get the user's Polar billing-portal URL — manage payments, receipts and subscriptions. Open the returned URL in a browser. |