{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_qgtrgkgupf6g","handle":"confbuilder","url":"https://wellknown.network/agents/confbuilder","links":{"self":"https://wellknown.network/agents/confbuilder/record.json","html":"https://wellknown.network/agents/confbuilder","markdown":"https://wellknown.network/agents/confbuilder/record.md","api":"https://wellknown.network/api/v1/agents/confbuilder","status":"https://wellknown.network/api/v1/agents/confbuilder/status","claim":"https://wellknown.network/agents/confbuilder/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/confbuilder/claim.json","badge":"https://wellknown.network/agents/confbuilder/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/confbuilder/history","tools":"https://wellknown.network/api/v1/agents/confbuilder/tools"},"ard":{"identifier":"urn:air:mcp.seamlessevents.io:server:confbuilder","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"ConfBuilder","summary":"ConfBuilder tools: events, speakers, sponsors, attendees, schedules, content, news, polls, chat.","description":"ConfBuilder tools: events, speakers, sponsors, attendees, schedules, content, news, polls, chat.","publisher":{"name":"io.seamlessevents.mcp","url":null},"homepage":"https://confbuilder.com","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.seamlessevents.io/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-30T19:48:24.665191Z","publishedAt":"2026-09-30T19:48:24.665191Z","registryName":"io.seamlessevents.mcp/confbuilder"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"data.news","name":"News & Feeds","confidence":1,"provenance":"derived"},{"slug":"commerce.payments","name":"Payments","confidence":1,"provenance":"derived"},{"slug":"communication.chat","name":"Team Chat","confidence":1,"provenance":"derived"},{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"documents.presentations","name":"Presentations","confidence":0.962,"provenance":"derived"},{"slug":"productivity.email","name":"Email","confidence":0.962,"provenance":"derived"},{"slug":"analytics.product","name":"Product Analytics","confidence":0.885,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":0.583,"provenance":"derived"}],"categories":["analytics","commerce","communication","data","documents","productivity","security"],"language":"fr"},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-10-09T19:27:10.237Z","lastProbedAt":"2026-10-09T19:27:10.237Z","statusComputedAt":"2026-10-09T19:28:26.439Z","reliability30d":{"probes":27,"successRate":1,"p50Ms":31,"basis":"mixed","measures":{"availability":"availability (some checks stopped at authentication)","latency":"response time (mixed)","tools":"partially observed","summary":"Some successful checks reached the service and some stopped at an authentication response; figures combine both."},"checks":{"total":27,"ok":27,"authBoundaryOk":11,"serviceOk":16,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-09T19:27:10.237Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":26,"error":null,"detail":{"tools":[{"name":"request_login_code","description":"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 whe"},{"name":"verify_login_code","description":"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 n"},{"name":"me","description":"Profile of the logged-in user (id, name, email, team_ids), via the Authorization header token."},{"name":"list_teams","description":"List the user's teams (id + name). Use a team_id when creating an event."},{"name":"find_events","description":"Find events the user can access. Optional free-text query `q`. Returns id/title/dates — chain the id into other tools."},{"name":"get_event","description":"Get one event by id (full detail: modules, speakers, sponsors, schedules)."},{"name":"get_event_modules","description":"List an event's modules with their enabled state (speaker, schedule, content, attendee, app)."},{"name":"toggle_event_module","description":"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 wit"},{"name":"list_event_members","description":"List the people with direct access to an event: user_id, name, email, role ('event:admin'/'event:editor'/'event:viewer'/'speaker'), invitation status ('active'/"},{"name":"invite_event_member","description":"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), 'e"},{"name":"update_event_member","description":"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"},{"name":"remove_event_member","description":"Remove a member's access to an event (their speaker links are not affected). Get user_id from list_event_members."},{"name":"accept_event_invitation","description":"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>'."},{"name":"list_speakers","description":"List speakers for an event (paginated). Optional form_type filter, e.g. 'speaker-intake' or 'call-for-speakers'."},{"name":"get_speaker","description":"Get one speaker by id (bio, talk title, headshot, logos, links)."},{"name":"create_speaker","description":"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_im"},{"name":"update_speaker","description":"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_appr"},{"name":"upload_speaker_image","description":"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."},{"name":"delete_speaker","description":"Delete a speaker from an event. Permanent — removes their talk links, content and images."},{"name":"send_speaker_login_link","description":"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 /"},{"name":"list_sponsors","description":"List sponsors for an event (paginated). Optional free-text query `q`."},{"name":"get_sponsor","description":"Get one sponsor by id (company info, contacts, logos, status)."},{"name":"create_sponsor","description":"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 value"},{"name":"delete_sponsor","description":"Delete a sponsor from an event. Permanent — removes their logo, links and card images."},{"name":"list_sponsor_categories","description":"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 w"},{"name":"update_sponsor","description":"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 "},{"name":"upload_sponsor_image","description":"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 i"},{"name":"list_schedules","description":"List schedules (tracks) for an event."},{"name":"get_schedule","description":"Get one schedule by id (with its activities)."},{"name":"create_schedule","description":"Create a schedule (track) for an event. Optional name (default 'Event Schedule'), schedule_type (default 'detailed') and location."},{"name":"update_schedule","description":"Update a schedule (track): name, schedule_type or location. Activities are managed separately."},{"name":"delete_event","description":"Delete an event (removes it from listings; payments preserved for audit)."},{"name":"publish_schedule","description":"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."},{"name":"delete_schedule","description":"Delete a schedule (track) and all its activities and versions."},{"name":"list_activities","description":"List activities (sessions/talks) in one schedule."},{"name":"create_activity","description":"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, n"},{"name":"update_activity","description":"Update a session (activity). Pass only the fields to change; setting speaker_ids/sponsor_ids replaces the linked speakers/sponsors."},{"name":"delete_activity","description":"Delete an activity (session) from a schedule."},{"name":"set_promo_config","description":"Create or update an event's card design config (upsert by event_id + promo_type). promo_type: 'website' (speaker website cards), 'sponsor-website' (sponsor webs"},{"name":"get_promo_config","description":"Get an event's card design config. Optional promo_type filter ('website', 'sponsor-website', 'promo', 'sponsor-promo'); without it returns the event's first con"},{"name":"list_card_presets","description":"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."},{"name":"set_form_config","description":"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 t"},{"name":"get_form_config","description":"Get an event's intake form config (fields + metadata). Optional form_type filter ('speaker-info', 'sponsor-info', 'call-for-speakers'); without it returns the f"},{"name":"get_website","description":"Get an event's website-builder state: config (the section/theme draft JSON), slug (claimed address, e.g. summit2026 gives summit2026.confbuilder.com), published"},{"name":"save_website","description":"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 askin"},{"name":"publish_website","description":"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"},{"name":"check_website_slug","description":"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."},{"name":"list_marketing_posters","description":"List an event's saved marketing posters (poster grids of speaker/sponsor/attendee cards, newest first)."},{"name":"create_marketing_poster","description":"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 t"},{"name":"update_marketing_poster","description":"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 "},{"name":"delete_marketing_poster","description":"Delete a marketing poster by id."},{"name":"list_content","description":"List an event's content items (slides, documents, assets) — or one entity's content only: pass entity_type ('speaker', 'sponsor' or 'schedule') + entity_id."},{"name":"upload_entity_content","description":"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 ser"},{"name":"archive_entity_content","description":"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 "},{"name":"list_news","description":"List news items for an event."},{"name":"create_news","description":"Post a news item to an event's news feed (organisers). notify=True (default) also push-notifies everyone linked to the event."},{"name":"list_polls","description":"List polls for an event (open polls with anonymous results; include_closed=True to see closed ones too)."},{"name":"create_poll","description":"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"},{"name":"list_chat_messages","description":"List chat messages for an event-wide channel (oldest last). Optional `peer` for a DM thread, `after` ISO timestamp to poll for new messages."},{"name":"list_chat_conversations","description":"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"},{"name":"send_chat_message","description":"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 chan"},{"name":"delete_chat_message","description":"Delete a chat message (your own; organisers can delete any)."},{"name":"list_notifications","description":"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 us"},{"name":"mark_notification_read","description":"Mark one of the user's notifications as read (get ids from list_notifications)."},{"name":"get_my_labels","description":"Get the logged-in user's areas-of-interest labels for an event (e.g. ['AI', 'Fintech']) — what they're interested in / following there."},{"name":"set_my_labels","description":"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 t"},{"name":"list_attendees","description":"List attendees for an event (paginated). Optional `search` by name/email, `state` filter (e.g. 'complete')."},{"name":"get_attendee","description":"Get one attendee by id (profile, ticket, check-in state)."},{"name":"check_in_attendees","description":"Check in attendees in bulk. attendee_ids are ids from list_attendees."},{"name":"void_attendee","description":"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."},{"name":"update_attendee","description":"Update an attendee's details. Pass only the fields to change (first_name, last_name, email, phone_number, company_name, job_title)."},{"name":"create_event","description":"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."},{"name":"update_event","description":"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."},{"name":"set_event_image","description":"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"},{"name":"create_checkout","description":"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"},{"name":"get_billing_portal_url","description":"Get the user's Polar billing-portal URL — manage payments, receipts and subscriptions. Open the returned URL in a browser."}],"toolCount":76,"toolsHash":"80c4c33d82a032836d77b14fc1edfbe0199a22fa3ba9ac84a8ba5c805bd6eb04","serverName":"confbuilder","capabilities":["logging","prompts","resources","tools"],"serverVersion":"4.0.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T13:31:42.947Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":32,"error":null,"detail":{"tools":[{"name":"request_login_code","description":"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 whe"},{"name":"verify_login_code","description":"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 n"},{"name":"me","description":"Profile of the logged-in user (id, name, email, team_ids), via the Authorization header token."},{"name":"list_teams","description":"List the user's teams (id + name). Use a team_id when creating an event."},{"name":"find_events","description":"Find events the user can access. Optional free-text query `q`. Returns id/title/dates — chain the id into other tools."},{"name":"get_event","description":"Get one event by id (full detail: modules, speakers, sponsors, schedules)."},{"name":"get_event_modules","description":"List an event's modules with their enabled state (speaker, schedule, content, attendee, app)."},{"name":"toggle_event_module","description":"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 wit"},{"name":"list_event_members","description":"List the people with direct access to an event: user_id, name, email, role ('event:admin'/'event:editor'/'event:viewer'/'speaker'), invitation status ('active'/"},{"name":"invite_event_member","description":"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), 'e"},{"name":"update_event_member","description":"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"},{"name":"remove_event_member","description":"Remove a member's access to an event (their speaker links are not affected). Get user_id from list_event_members."},{"name":"accept_event_invitation","description":"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>'."},{"name":"list_speakers","description":"List speakers for an event (paginated). Optional form_type filter, e.g. 'speaker-intake' or 'call-for-speakers'."},{"name":"get_speaker","description":"Get one speaker by id (bio, talk title, headshot, logos, links)."},{"name":"create_speaker","description":"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_im"},{"name":"update_speaker","description":"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_appr"},{"name":"upload_speaker_image","description":"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."},{"name":"delete_speaker","description":"Delete a speaker from an event. Permanent — removes their talk links, content and images."},{"name":"send_speaker_login_link","description":"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 /"},{"name":"list_sponsors","description":"List sponsors for an event (paginated). Optional free-text query `q`."},{"name":"get_sponsor","description":"Get one sponsor by id (company info, contacts, logos, status)."},{"name":"create_sponsor","description":"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 value"},{"name":"delete_sponsor","description":"Delete a sponsor from an event. Permanent — removes their logo, links and card images."},{"name":"list_sponsor_categories","description":"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 w"},{"name":"update_sponsor","description":"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 "},{"name":"upload_sponsor_image","description":"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 i"},{"name":"list_schedules","description":"List schedules (tracks) for an event."},{"name":"get_schedule","description":"Get one schedule by id (with its activities)."},{"name":"create_schedule","description":"Create a schedule (track) for an event. Optional name (default 'Event Schedule'), schedule_type (default 'detailed') and location."},{"name":"update_schedule","description":"Update a schedule (track): name, schedule_type or location. Activities are managed separately."},{"name":"delete_event","description":"Delete an event (removes it from listings; payments preserved for audit)."},{"name":"publish_schedule","description":"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."},{"name":"delete_schedule","description":"Delete a schedule (track) and all its activities and versions."},{"name":"list_activities","description":"List activities (sessions/talks) in one schedule."},{"name":"create_activity","description":"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, n"},{"name":"update_activity","description":"Update a session (activity). Pass only the fields to change; setting speaker_ids/sponsor_ids replaces the linked speakers/sponsors."},{"name":"delete_activity","description":"Delete an activity (session) from a schedule."},{"name":"set_promo_config","description":"Create or update an event's card design config (upsert by event_id + promo_type). promo_type: 'website' (speaker website cards), 'sponsor-website' (sponsor webs"},{"name":"get_promo_config","description":"Get an event's card design config. Optional promo_type filter ('website', 'sponsor-website', 'promo', 'sponsor-promo'); without it returns the event's first con"},{"name":"list_card_presets","description":"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."},{"name":"set_form_config","description":"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 t"},{"name":"get_form_config","description":"Get an event's intake form config (fields + metadata). Optional form_type filter ('speaker-info', 'sponsor-info', 'call-for-speakers'); without it returns the f"},{"name":"get_website","description":"Get an event's website-builder state: config (the section/theme draft JSON), slug (claimed address, e.g. summit2026 gives summit2026.confbuilder.com), published"},{"name":"save_website","description":"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 askin"},{"name":"publish_website","description":"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"},{"name":"check_website_slug","description":"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."},{"name":"list_marketing_posters","description":"List an event's saved marketing posters (poster grids of speaker/sponsor/attendee cards, newest first)."},{"name":"create_marketing_poster","description":"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 t"},{"name":"update_marketing_poster","description":"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 "},{"name":"delete_marketing_poster","description":"Delete a marketing poster by id."},{"name":"list_content","description":"List an event's content items (slides, documents, assets) — or one entity's content only: pass entity_type ('speaker', 'sponsor' or 'schedule') + entity_id."},{"name":"upload_entity_content","description":"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 ser"},{"name":"archive_entity_content","description":"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 "},{"name":"list_news","description":"List news items for an event."},{"name":"create_news","description":"Post a news item to an event's news feed (organisers). notify=True (default) also push-notifies everyone linked to the event."},{"name":"list_polls","description":"List polls for an event (open polls with anonymous results; include_closed=True to see closed ones too)."},{"name":"create_poll","description":"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"},{"name":"list_chat_messages","description":"List chat messages for an event-wide channel (oldest last). Optional `peer` for a DM thread, `after` ISO timestamp to poll for new messages."},{"name":"list_chat_conversations","description":"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"},{"name":"send_chat_message","description":"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 chan"},{"name":"delete_chat_message","description":"Delete a chat message (your own; organisers can delete any)."},{"name":"list_notifications","description":"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 us"},{"name":"mark_notification_read","description":"Mark one of the user's notifications as read (get ids from list_notifications)."},{"name":"get_my_labels","description":"Get the logged-in user's areas-of-interest labels for an event (e.g. ['AI', 'Fintech']) — what they're interested in / following there."},{"name":"set_my_labels","description":"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 t"},{"name":"list_attendees","description":"List attendees for an event (paginated). Optional `search` by name/email, `state` filter (e.g. 'complete')."},{"name":"get_attendee","description":"Get one attendee by id (profile, ticket, check-in state)."},{"name":"check_in_attendees","description":"Check in attendees in bulk. attendee_ids are ids from list_attendees."},{"name":"void_attendee","description":"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."},{"name":"update_attendee","description":"Update an attendee's details. Pass only the fields to change (first_name, last_name, email, phone_number, company_name, job_title)."},{"name":"create_event","description":"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."},{"name":"update_event","description":"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."},{"name":"set_event_image","description":"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"},{"name":"create_checkout","description":"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"},{"name":"get_billing_portal_url","description":"Get the user's Polar billing-portal URL — manage payments, receipts and subscriptions. Open the returned URL in a browser."}],"toolCount":76,"toolsHash":"80c4c33d82a032836d77b14fc1edfbe0199a22fa3ba9ac84a8ba5c805bd6eb04","serverName":"confbuilder","capabilities":["logging","prompts","resources","tools"],"serverVersion":"4.0.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T07:24:21.974Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":27,"error":null,"detail":{"tools":[{"name":"request_login_code","description":"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 whe"},{"name":"verify_login_code","description":"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 n"},{"name":"me","description":"Profile of the logged-in user (id, name, email, team_ids), via the Authorization header token."},{"name":"list_teams","description":"List the user's teams (id + name). Use a team_id when creating an event."},{"name":"find_events","description":"Find events the user can access. Optional free-text query `q`. Returns id/title/dates — chain the id into other tools."},{"name":"get_event","description":"Get one event by id (full detail: modules, speakers, sponsors, schedules)."},{"name":"get_event_modules","description":"List an event's modules with their enabled state (speaker, schedule, content, attendee, app)."},{"name":"toggle_event_module","description":"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 wit"},{"name":"list_event_members","description":"List the people with direct access to an event: user_id, name, email, role ('event:admin'/'event:editor'/'event:viewer'/'speaker'), invitation status ('active'/"},{"name":"invite_event_member","description":"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), 'e"},{"name":"update_event_member","description":"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"},{"name":"remove_event_member","description":"Remove a member's access to an event (their speaker links are not affected). Get user_id from list_event_members."},{"name":"accept_event_invitation","description":"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>'."},{"name":"list_speakers","description":"List speakers for an event (paginated). Optional form_type filter, e.g. 'speaker-intake' or 'call-for-speakers'."},{"name":"get_speaker","description":"Get one speaker by id (bio, talk title, headshot, logos, links)."},{"name":"create_speaker","description":"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_im"},{"name":"update_speaker","description":"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_appr"},{"name":"upload_speaker_image","description":"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."},{"name":"delete_speaker","description":"Delete a speaker from an event. Permanent — removes their talk links, content and images."},{"name":"send_speaker_login_link","description":"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 /"},{"name":"list_sponsors","description":"List sponsors for an event (paginated). Optional free-text query `q`."},{"name":"get_sponsor","description":"Get one sponsor by id (company info, contacts, logos, status)."},{"name":"create_sponsor","description":"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 value"},{"name":"delete_sponsor","description":"Delete a sponsor from an event. Permanent — removes their logo, links and card images."},{"name":"list_sponsor_categories","description":"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 w"},{"name":"update_sponsor","description":"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 "},{"name":"upload_sponsor_image","description":"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 i"},{"name":"list_schedules","description":"List schedules (tracks) for an event."},{"name":"get_schedule","description":"Get one schedule by id (with its activities)."},{"name":"create_schedule","description":"Create a schedule (track) for an event. Optional name (default 'Event Schedule'), schedule_type (default 'detailed') and location."},{"name":"update_schedule","description":"Update a schedule (track): name, schedule_type or location. Activities are managed separately."},{"name":"delete_event","description":"Delete an event (removes it from listings; payments preserved for audit)."},{"name":"publish_schedule","description":"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."},{"name":"delete_schedule","description":"Delete a schedule (track) and all its activities and versions."},{"name":"list_activities","description":"List activities (sessions/talks) in one schedule."},{"name":"create_activity","description":"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, n"},{"name":"update_activity","description":"Update a session (activity). Pass only the fields to change; setting speaker_ids/sponsor_ids replaces the linked speakers/sponsors."},{"name":"delete_activity","description":"Delete an activity (session) from a schedule."},{"name":"set_promo_config","description":"Create or update an event's card design config (upsert by event_id + promo_type). promo_type: 'website' (speaker website cards), 'sponsor-website' (sponsor webs"},{"name":"get_promo_config","description":"Get an event's card design config. Optional promo_type filter ('website', 'sponsor-website', 'promo', 'sponsor-promo'); without it returns the event's first con"},{"name":"list_card_presets","description":"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."},{"name":"set_form_config","description":"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 t"},{"name":"get_form_config","description":"Get an event's intake form config (fields + metadata). Optional form_type filter ('speaker-info', 'sponsor-info', 'call-for-speakers'); without it returns the f"},{"name":"get_website","description":"Get an event's website-builder state: config (the section/theme draft JSON), slug (claimed address, e.g. summit2026 gives summit2026.confbuilder.com), published"},{"name":"save_website","description":"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 askin"},{"name":"publish_website","description":"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"},{"name":"check_website_slug","description":"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."},{"name":"list_marketing_posters","description":"List an event's saved marketing posters (poster grids of speaker/sponsor/attendee cards, newest first)."},{"name":"create_marketing_poster","description":"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 t"},{"name":"update_marketing_poster","description":"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 "},{"name":"delete_marketing_poster","description":"Delete a marketing poster by id."},{"name":"list_content","description":"List an event's content items (slides, documents, assets) — or one entity's content only: pass entity_type ('speaker', 'sponsor' or 'schedule') + entity_id."},{"name":"upload_entity_content","description":"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 ser"},{"name":"archive_entity_content","description":"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 "},{"name":"list_news","description":"List news items for an event."},{"name":"create_news","description":"Post a news item to an event's news feed (organisers). notify=True (default) also push-notifies everyone linked to the event."},{"name":"list_polls","description":"List polls for an event (open polls with anonymous results; include_closed=True to see closed ones too)."},{"name":"create_poll","description":"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"},{"name":"list_chat_messages","description":"List chat messages for an event-wide channel (oldest last). Optional `peer` for a DM thread, `after` ISO timestamp to poll for new messages."},{"name":"list_chat_conversations","description":"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"},{"name":"send_chat_message","description":"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 chan"},{"name":"delete_chat_message","description":"Delete a chat message (your own; organisers can delete any)."},{"name":"list_notifications","description":"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 us"},{"name":"mark_notification_read","description":"Mark one of the user's notifications as read (get ids from list_notifications)."},{"name":"get_my_labels","description":"Get the logged-in user's areas-of-interest labels for an event (e.g. ['AI', 'Fintech']) — what they're interested in / following there."},{"name":"set_my_labels","description":"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 t"},{"name":"list_attendees","description":"List attendees for an event (paginated). Optional `search` by name/email, `state` filter (e.g. 'complete')."},{"name":"get_attendee","description":"Get one attendee by id (profile, ticket, check-in state)."},{"name":"check_in_attendees","description":"Check in attendees in bulk. attendee_ids are ids from list_attendees."},{"name":"void_attendee","description":"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."},{"name":"update_attendee","description":"Update an attendee's details. Pass only the fields to change (first_name, last_name, email, phone_number, company_name, job_title)."},{"name":"create_event","description":"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."},{"name":"update_event","description":"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."},{"name":"set_event_image","description":"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"},{"name":"create_checkout","description":"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"},{"name":"get_billing_portal_url","description":"Get the user's Polar billing-portal URL — manage payments, receipts and subscriptions. Open the returned URL in a browser."}],"toolCount":76,"toolsHash":"80c4c33d82a032836d77b14fc1edfbe0199a22fa3ba9ac84a8ba5c805bd6eb04","serverName":"confbuilder","capabilities":["logging","prompts","resources","tools"],"serverVersion":"4.0.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T00:25:29.073Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":38,"error":null,"detail":{"tools":[{"name":"request_login_code","description":"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 whe"},{"name":"verify_login_code","description":"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 n"},{"name":"me","description":"Profile of the logged-in user (id, name, email, team_ids), via the Authorization header token."},{"name":"list_teams","description":"List the user's teams (id + name). Use a team_id when creating an event."},{"name":"find_events","description":"Find events the user can access. Optional free-text query `q`. Returns id/title/dates — chain the id into other tools."},{"name":"get_event","description":"Get one event by id (full detail: modules, speakers, sponsors, schedules)."},{"name":"get_event_modules","description":"List an event's modules with their enabled state (speaker, schedule, content, attendee, app)."},{"name":"toggle_event_module","description":"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 wit"},{"name":"list_event_members","description":"List the people with direct access to an event: user_id, name, email, role ('event:admin'/'event:editor'/'event:viewer'/'speaker'), invitation status ('active'/"},{"name":"invite_event_member","description":"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), 'e"},{"name":"update_event_member","description":"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"},{"name":"remove_event_member","description":"Remove a member's access to an event (their speaker links are not affected). Get user_id from list_event_members."},{"name":"accept_event_invitation","description":"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>'."},{"name":"list_speakers","description":"List speakers for an event (paginated). Optional form_type filter, e.g. 'speaker-intake' or 'call-for-speakers'."},{"name":"get_speaker","description":"Get one speaker by id (bio, talk title, headshot, logos, links)."},{"name":"create_speaker","description":"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_im"},{"name":"update_speaker","description":"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_appr"},{"name":"upload_speaker_image","description":"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."},{"name":"delete_speaker","description":"Delete a speaker from an event. Permanent — removes their talk links, content and images."},{"name":"send_speaker_login_link","description":"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 /"},{"name":"list_sponsors","description":"List sponsors for an event (paginated). Optional free-text query `q`."},{"name":"get_sponsor","description":"Get one sponsor by id (company info, contacts, logos, status)."},{"name":"create_sponsor","description":"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 value"},{"name":"delete_sponsor","description":"Delete a sponsor from an event. Permanent — removes their logo, links and card images."},{"name":"list_sponsor_categories","description":"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 w"},{"name":"update_sponsor","description":"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 "},{"name":"upload_sponsor_image","description":"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 i"},{"name":"list_schedules","description":"List schedules (tracks) for an event."},{"name":"get_schedule","description":"Get one schedule by id (with its activities)."},{"name":"create_schedule","description":"Create a schedule (track) for an event. Optional name (default 'Event Schedule'), schedule_type (default 'detailed') and location."},{"name":"update_schedule","description":"Update a schedule (track): name, schedule_type or location. Activities are managed separately."},{"name":"delete_event","description":"Delete an event (removes it from listings; payments preserved for audit)."},{"name":"publish_schedule","description":"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."},{"name":"delete_schedule","description":"Delete a schedule (track) and all its activities and versions."},{"name":"list_activities","description":"List activities (sessions/talks) in one schedule."},{"name":"create_activity","description":"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, n"},{"name":"update_activity","description":"Update a session (activity). Pass only the fields to change; setting speaker_ids/sponsor_ids replaces the linked speakers/sponsors."},{"name":"delete_activity","description":"Delete an activity (session) from a schedule."},{"name":"set_promo_config","description":"Create or update an event's card design config (upsert by event_id + promo_type). promo_type: 'website' (speaker website cards), 'sponsor-website' (sponsor webs"},{"name":"get_promo_config","description":"Get an event's card design config. Optional promo_type filter ('website', 'sponsor-website', 'promo', 'sponsor-promo'); without it returns the event's first con"},{"name":"list_card_presets","description":"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."},{"name":"set_form_config","description":"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 t"},{"name":"get_form_config","description":"Get an event's intake form config (fields + metadata). Optional form_type filter ('speaker-info', 'sponsor-info', 'call-for-speakers'); without it returns the f"},{"name":"get_website","description":"Get an event's website-builder state: config (the section/theme draft JSON), slug (claimed address, e.g. summit2026 gives summit2026.confbuilder.com), published"},{"name":"save_website","description":"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 askin"},{"name":"publish_website","description":"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"},{"name":"check_website_slug","description":"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."},{"name":"list_marketing_posters","description":"List an event's saved marketing posters (poster grids of speaker/sponsor/attendee cards, newest first)."},{"name":"create_marketing_poster","description":"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 t"},{"name":"update_marketing_poster","description":"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 "},{"name":"delete_marketing_poster","description":"Delete a marketing poster by id."},{"name":"list_content","description":"List an event's content items (slides, documents, assets) — or one entity's content only: pass entity_type ('speaker', 'sponsor' or 'schedule') + entity_id."},{"name":"upload_entity_content","description":"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 ser"},{"name":"archive_entity_content","description":"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 "},{"name":"list_news","description":"List news items for an event."},{"name":"create_news","description":"Post a news item to an event's news feed (organisers). notify=True (default) also push-notifies everyone linked to the event."},{"name":"list_polls","description":"List polls for an event (open polls with anonymous results; include_closed=True to see closed ones too)."},{"name":"create_poll","description":"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"},{"name":"list_chat_messages","description":"List chat messages for an event-wide channel (oldest last). Optional `peer` for a DM thread, `after` ISO timestamp to poll for new messages."},{"name":"list_chat_conversations","description":"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"},{"name":"send_chat_message","description":"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 chan"},{"name":"delete_chat_message","description":"Delete a chat message (your own; organisers can delete any)."},{"name":"list_notifications","description":"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 us"},{"name":"mark_notification_read","description":"Mark one of the user's notifications as read (get ids from list_notifications)."},{"name":"get_my_labels","description":"Get the logged-in user's areas-of-interest labels for an event (e.g. ['AI', 'Fintech']) — what they're interested in / following there."},{"name":"set_my_labels","description":"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 t"},{"name":"list_attendees","description":"List attendees for an event (paginated). Optional `search` by name/email, `state` filter (e.g. 'complete')."},{"name":"get_attendee","description":"Get one attendee by id (profile, ticket, check-in state)."},{"name":"check_in_attendees","description":"Check in attendees in bulk. attendee_ids are ids from list_attendees."},{"name":"void_attendee","description":"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."},{"name":"update_attendee","description":"Update an attendee's details. Pass only the fields to change (first_name, last_name, email, phone_number, company_name, job_title)."},{"name":"create_event","description":"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."},{"name":"update_event","description":"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."},{"name":"set_event_image","description":"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"},{"name":"create_checkout","description":"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"},{"name":"get_billing_portal_url","description":"Get the user's Polar billing-portal URL — manage payments, receipts and subscriptions. Open the returned URL in a browser."}],"toolCount":76,"toolsHash":"80c4c33d82a032836d77b14fc1edfbe0199a22fa3ba9ac84a8ba5c805bd6eb04","serverName":"confbuilder","capabilities":["logging","prompts","resources","tools"],"serverVersion":"4.0.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T18:27:39.890Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":28,"error":null,"detail":{"tools":[{"name":"request_login_code","description":"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 whe"},{"name":"verify_login_code","description":"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 n"},{"name":"me","description":"Profile of the logged-in user (id, name, email, team_ids), via the Authorization header token."},{"name":"list_teams","description":"List the user's teams (id + name). Use a team_id when creating an event."},{"name":"find_events","description":"Find events the user can access. Optional free-text query `q`. Returns id/title/dates — chain the id into other tools."},{"name":"get_event","description":"Get one event by id (full detail: modules, speakers, sponsors, schedules)."},{"name":"get_event_modules","description":"List an event's modules with their enabled state (speaker, schedule, content, attendee, app)."},{"name":"toggle_event_module","description":"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 wit"},{"name":"list_event_members","description":"List the people with direct access to an event: user_id, name, email, role ('event:admin'/'event:editor'/'event:viewer'/'speaker'), invitation status ('active'/"},{"name":"invite_event_member","description":"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), 'e"},{"name":"update_event_member","description":"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"},{"name":"remove_event_member","description":"Remove a member's access to an event (their speaker links are not affected). Get user_id from list_event_members."},{"name":"accept_event_invitation","description":"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>'."},{"name":"list_speakers","description":"List speakers for an event (paginated). Optional form_type filter, e.g. 'speaker-intake' or 'call-for-speakers'."},{"name":"get_speaker","description":"Get one speaker by id (bio, talk title, headshot, logos, links)."},{"name":"create_speaker","description":"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_im"},{"name":"update_speaker","description":"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_appr"},{"name":"upload_speaker_image","description":"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."},{"name":"delete_speaker","description":"Delete a speaker from an event. Permanent — removes their talk links, content and images."},{"name":"send_speaker_login_link","description":"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 /"},{"name":"list_sponsors","description":"List sponsors for an event (paginated). Optional free-text query `q`."},{"name":"get_sponsor","description":"Get one sponsor by id (company info, contacts, logos, status)."},{"name":"create_sponsor","description":"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 value"},{"name":"delete_sponsor","description":"Delete a sponsor from an event. Permanent — removes their logo, links and card images."},{"name":"list_sponsor_categories","description":"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 w"},{"name":"update_sponsor","description":"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 "},{"name":"upload_sponsor_image","description":"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 i"},{"name":"list_schedules","description":"List schedules (tracks) for an event."},{"name":"get_schedule","description":"Get one schedule by id (with its activities)."},{"name":"create_schedule","description":"Create a schedule (track) for an event. Optional name (default 'Event Schedule'), schedule_type (default 'detailed') and location."},{"name":"update_schedule","description":"Update a schedule (track): name, schedule_type or location. Activities are managed separately."},{"name":"delete_event","description":"Delete an event (removes it from listings; payments preserved for audit)."},{"name":"publish_schedule","description":"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."},{"name":"delete_schedule","description":"Delete a schedule (track) and all its activities and versions."},{"name":"list_activities","description":"List activities (sessions/talks) in one schedule."},{"name":"create_activity","description":"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, n"},{"name":"update_activity","description":"Update a session (activity). Pass only the fields to change; setting speaker_ids/sponsor_ids replaces the linked speakers/sponsors."},{"name":"delete_activity","description":"Delete an activity (session) from a schedule."},{"name":"set_promo_config","description":"Create or update an event's card design config (upsert by event_id + promo_type). promo_type: 'website' (speaker website cards), 'sponsor-website' (sponsor webs"},{"name":"get_promo_config","description":"Get an event's card design config. Optional promo_type filter ('website', 'sponsor-website', 'promo', 'sponsor-promo'); without it returns the event's first con"},{"name":"list_card_presets","description":"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."},{"name":"set_form_config","description":"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 t"},{"name":"get_form_config","description":"Get an event's intake form config (fields + metadata). Optional form_type filter ('speaker-info', 'sponsor-info', 'call-for-speakers'); without it returns the f"},{"name":"get_website","description":"Get an event's website-builder state: config (the section/theme draft JSON), slug (claimed address, e.g. summit2026 gives summit2026.confbuilder.com), published"},{"name":"save_website","description":"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 askin"},{"name":"publish_website","description":"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"},{"name":"check_website_slug","description":"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."},{"name":"list_marketing_posters","description":"List an event's saved marketing posters (poster grids of speaker/sponsor/attendee cards, newest first)."},{"name":"create_marketing_poster","description":"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 t"},{"name":"update_marketing_poster","description":"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 "},{"name":"delete_marketing_poster","description":"Delete a marketing poster by id."},{"name":"list_content","description":"List an event's content items (slides, documents, assets) — or one entity's content only: pass entity_type ('speaker', 'sponsor' or 'schedule') + entity_id."},{"name":"upload_entity_content","description":"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 ser"},{"name":"archive_entity_content","description":"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 "},{"name":"list_news","description":"List news items for an event."},{"name":"create_news","description":"Post a news item to an event's news feed (organisers). notify=True (default) also push-notifies everyone linked to the event."},{"name":"list_polls","description":"List polls for an event (open polls with anonymous results; include_closed=True to see closed ones too)."},{"name":"create_poll","description":"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"},{"name":"list_chat_messages","description":"List chat messages for an event-wide channel (oldest last). Optional `peer` for a DM thread, `after` ISO timestamp to poll for new messages."},{"name":"list_chat_conversations","description":"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"},{"name":"send_chat_message","description":"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 chan"},{"name":"delete_chat_message","description":"Delete a chat message (your own; organisers can delete any)."},{"name":"list_notifications","description":"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 us"},{"name":"mark_notification_read","description":"Mark one of the user's notifications as read (get ids from list_notifications)."},{"name":"get_my_labels","description":"Get the logged-in user's areas-of-interest labels for an event (e.g. ['AI', 'Fintech']) — what they're interested in / following there."},{"name":"set_my_labels","description":"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 t"},{"name":"list_attendees","description":"List attendees for an event (paginated). Optional `search` by name/email, `state` filter (e.g. 'complete')."},{"name":"get_attendee","description":"Get one attendee by id (profile, ticket, check-in state)."},{"name":"check_in_attendees","description":"Check in attendees in bulk. attendee_ids are ids from list_attendees."},{"name":"void_attendee","description":"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."},{"name":"update_attendee","description":"Update an attendee's details. Pass only the fields to change (first_name, last_name, email, phone_number, company_name, job_title)."},{"name":"create_event","description":"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."},{"name":"update_event","description":"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."},{"name":"set_event_image","description":"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"},{"name":"create_checkout","description":"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"},{"name":"get_billing_portal_url","description":"Get the user's Polar billing-portal URL — manage payments, receipts and subscriptions. Open the returned URL in a browser."}],"toolCount":76,"toolsHash":"80c4c33d82a032836d77b14fc1edfbe0199a22fa3ba9ac84a8ba5c805bd6eb04","serverName":"confbuilder","capabilities":["logging","prompts","resources","tools"],"serverVersion":"4.0.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T12:24:56.975Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":29,"error":null,"detail":{"tools":[{"name":"request_login_code","description":"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 whe"},{"name":"verify_login_code","description":"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 n"},{"name":"me","description":"Profile of the logged-in user (id, name, email, team_ids), via the Authorization header token."},{"name":"list_teams","description":"List the user's teams (id + name). Use a team_id when creating an event."},{"name":"find_events","description":"Find events the user can access. Optional free-text query `q`. Returns id/title/dates — chain the id into other tools."},{"name":"get_event","description":"Get one event by id (full detail: modules, speakers, sponsors, schedules)."},{"name":"get_event_modules","description":"List an event's modules with their enabled state (speaker, schedule, content, attendee, app)."},{"name":"toggle_event_module","description":"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 wit"},{"name":"list_event_members","description":"List the people with direct access to an event: user_id, name, email, role ('event:admin'/'event:editor'/'event:viewer'/'speaker'), invitation status ('active'/"},{"name":"invite_event_member","description":"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), 'e"},{"name":"update_event_member","description":"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"},{"name":"remove_event_member","description":"Remove a member's access to an event (their speaker links are not affected). Get user_id from list_event_members."},{"name":"accept_event_invitation","description":"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>'."},{"name":"list_speakers","description":"List speakers for an event (paginated). Optional form_type filter, e.g. 'speaker-intake' or 'call-for-speakers'."},{"name":"get_speaker","description":"Get one speaker by id (bio, talk title, headshot, logos, links)."},{"name":"create_speaker","description":"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_im"},{"name":"update_speaker","description":"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_appr"},{"name":"upload_speaker_image","description":"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."},{"name":"delete_speaker","description":"Delete a speaker from an event. Permanent — removes their talk links, content and images."},{"name":"send_speaker_login_link","description":"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 /"},{"name":"list_sponsors","description":"List sponsors for an event (paginated). Optional free-text query `q`."},{"name":"get_sponsor","description":"Get one sponsor by id (company info, contacts, logos, status)."},{"name":"create_sponsor","description":"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 value"},{"name":"delete_sponsor","description":"Delete a sponsor from an event. Permanent — removes their logo, links and card images."},{"name":"list_sponsor_categories","description":"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 w"},{"name":"update_sponsor","description":"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 "},{"name":"upload_sponsor_image","description":"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 i"},{"name":"list_schedules","description":"List schedules (tracks) for an event."},{"name":"get_schedule","description":"Get one schedule by id (with its activities)."},{"name":"create_schedule","description":"Create a schedule (track) for an event. Optional name (default 'Event Schedule'), schedule_type (default 'detailed') and location."},{"name":"update_schedule","description":"Update a schedule (track): name, schedule_type or location. Activities are managed separately."},{"name":"delete_event","description":"Delete an event (removes it from listings; payments preserved for audit)."},{"name":"publish_schedule","description":"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."},{"name":"delete_schedule","description":"Delete a schedule (track) and all its activities and versions."},{"name":"list_activities","description":"List activities (sessions/talks) in one schedule."},{"name":"create_activity","description":"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, n"},{"name":"update_activity","description":"Update a session (activity). Pass only the fields to change; setting speaker_ids/sponsor_ids replaces the linked speakers/sponsors."},{"name":"delete_activity","description":"Delete an activity (session) from a schedule."},{"name":"set_promo_config","description":"Create or update an event's card design config (upsert by event_id + promo_type). promo_type: 'website' (speaker website cards), 'sponsor-website' (sponsor webs"},{"name":"get_promo_config","description":"Get an event's card design config. Optional promo_type filter ('website', 'sponsor-website', 'promo', 'sponsor-promo'); without it returns the event's first con"},{"name":"list_card_presets","description":"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."},{"name":"set_form_config","description":"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 t"},{"name":"get_form_config","description":"Get an event's intake form config (fields + metadata). Optional form_type filter ('speaker-info', 'sponsor-info', 'call-for-speakers'); without it returns the f"},{"name":"get_website","description":"Get an event's website-builder state: config (the section/theme draft JSON), slug (claimed address, e.g. summit2026 gives summit2026.confbuilder.com), published"},{"name":"save_website","description":"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 askin"},{"name":"publish_website","description":"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"},{"name":"check_website_slug","description":"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."},{"name":"list_marketing_posters","description":"List an event's saved marketing posters (poster grids of speaker/sponsor/attendee cards, newest first)."},{"name":"create_marketing_poster","description":"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 t"},{"name":"update_marketing_poster","description":"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 "},{"name":"delete_marketing_poster","description":"Delete a marketing poster by id."},{"name":"list_content","description":"List an event's content items (slides, documents, assets) — or one entity's content only: pass entity_type ('speaker', 'sponsor' or 'schedule') + entity_id."},{"name":"upload_entity_content","description":"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 ser"},{"name":"archive_entity_content","description":"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 "},{"name":"list_news","description":"List news items for an event."},{"name":"create_news","description":"Post a news item to an event's news feed (organisers). notify=True (default) also push-notifies everyone linked to the event."},{"name":"list_polls","description":"List polls for an event (open polls with anonymous results; include_closed=True to see closed ones too)."},{"name":"create_poll","description":"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"},{"name":"list_chat_messages","description":"List chat messages for an event-wide channel (oldest last). Optional `peer` for a DM thread, `after` ISO timestamp to poll for new messages."},{"name":"list_chat_conversations","description":"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"},{"name":"send_chat_message","description":"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 chan"},{"name":"delete_chat_message","description":"Delete a chat message (your own; organisers can delete any)."},{"name":"list_notifications","description":"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 us"},{"name":"mark_notification_read","description":"Mark one of the user's notifications as read (get ids from list_notifications)."},{"name":"get_my_labels","description":"Get the logged-in user's areas-of-interest labels for an event (e.g. ['AI', 'Fintech']) — what they're interested in / following there."},{"name":"set_my_labels","description":"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 t"},{"name":"list_attendees","description":"List attendees for an event (paginated). Optional `search` by name/email, `state` filter (e.g. 'complete')."},{"name":"get_attendee","description":"Get one attendee by id (profile, ticket, check-in state)."},{"name":"check_in_attendees","description":"Check in attendees in bulk. attendee_ids are ids from list_attendees."},{"name":"void_attendee","description":"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."},{"name":"update_attendee","description":"Update an attendee's details. Pass only the fields to change (first_name, last_name, email, phone_number, company_name, job_title)."},{"name":"create_event","description":"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."},{"name":"update_event","description":"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."},{"name":"set_event_image","description":"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"},{"name":"create_checkout","description":"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"},{"name":"get_billing_portal_url","description":"Get the user's Polar billing-portal URL — manage payments, receipts and subscriptions. Open the returned URL in a browser."}],"toolCount":76,"toolsHash":"80c4c33d82a032836d77b14fc1edfbe0199a22fa3ba9ac84a8ba5c805bd6eb04","serverName":"confbuilder","capabilities":["logging","prompts","resources","tools"],"serverVersion":"4.0.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T05:21:27.394Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":35,"error":null,"detail":{"tools":[{"name":"request_login_code","description":"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 whe"},{"name":"verify_login_code","description":"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 n"},{"name":"me","description":"Profile of the logged-in user (id, name, email, team_ids), via the Authorization header token."},{"name":"list_teams","description":"List the user's teams (id + name). Use a team_id when creating an event."},{"name":"find_events","description":"Find events the user can access. Optional free-text query `q`. Returns id/title/dates — chain the id into other tools."},{"name":"get_event","description":"Get one event by id (full detail: modules, speakers, sponsors, schedules)."},{"name":"get_event_modules","description":"List an event's modules with their enabled state (speaker, schedule, content, attendee, app)."},{"name":"toggle_event_module","description":"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 wit"},{"name":"list_event_members","description":"List the people with direct access to an event: user_id, name, email, role ('event:admin'/'event:editor'/'event:viewer'/'speaker'), invitation status ('active'/"},{"name":"invite_event_member","description":"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), 'e"},{"name":"update_event_member","description":"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"},{"name":"remove_event_member","description":"Remove a member's access to an event (their speaker links are not affected). Get user_id from list_event_members."},{"name":"accept_event_invitation","description":"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>'."},{"name":"list_speakers","description":"List speakers for an event (paginated). Optional form_type filter, e.g. 'speaker-intake' or 'call-for-speakers'."},{"name":"get_speaker","description":"Get one speaker by id (bio, talk title, headshot, logos, links)."},{"name":"create_speaker","description":"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_im"},{"name":"update_speaker","description":"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_appr"},{"name":"upload_speaker_image","description":"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."},{"name":"delete_speaker","description":"Delete a speaker from an event. Permanent — removes their talk links, content and images."},{"name":"send_speaker_login_link","description":"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 /"},{"name":"list_sponsors","description":"List sponsors for an event (paginated). Optional free-text query `q`."},{"name":"get_sponsor","description":"Get one sponsor by id (company info, contacts, logos, status)."},{"name":"create_sponsor","description":"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 value"},{"name":"delete_sponsor","description":"Delete a sponsor from an event. Permanent — removes their logo, links and card images."},{"name":"list_sponsor_categories","description":"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 w"},{"name":"update_sponsor","description":"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 "},{"name":"upload_sponsor_image","description":"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 i"},{"name":"list_schedules","description":"List schedules (tracks) for an event."},{"name":"get_schedule","description":"Get one schedule by id (with its activities)."},{"name":"create_schedule","description":"Create a schedule (track) for an event. Optional name (default 'Event Schedule'), schedule_type (default 'detailed') and location."},{"name":"update_schedule","description":"Update a schedule (track): name, schedule_type or location. Activities are managed separately."},{"name":"delete_event","description":"Delete an event (removes it from listings; payments preserved for audit)."},{"name":"publish_schedule","description":"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."},{"name":"delete_schedule","description":"Delete a schedule (track) and all its activities and versions."},{"name":"list_activities","description":"List activities (sessions/talks) in one schedule."},{"name":"create_activity","description":"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, n"},{"name":"update_activity","description":"Update a session (activity). Pass only the fields to change; setting speaker_ids/sponsor_ids replaces the linked speakers/sponsors."},{"name":"delete_activity","description":"Delete an activity (session) from a schedule."},{"name":"set_promo_config","description":"Create or update an event's card design config (upsert by event_id + promo_type). promo_type: 'website' (speaker website cards), 'sponsor-website' (sponsor webs"},{"name":"get_promo_config","description":"Get an event's card design config. Optional promo_type filter ('website', 'sponsor-website', 'promo', 'sponsor-promo'); without it returns the event's first con"},{"name":"list_card_presets","description":"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."},{"name":"set_form_config","description":"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 t"},{"name":"get_form_config","description":"Get an event's intake form config (fields + metadata). Optional form_type filter ('speaker-info', 'sponsor-info', 'call-for-speakers'); without it returns the f"},{"name":"get_website","description":"Get an event's website-builder state: config (the section/theme draft JSON), slug (claimed address, e.g. summit2026 gives summit2026.confbuilder.com), published"},{"name":"save_website","description":"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 askin"},{"name":"publish_website","description":"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"},{"name":"check_website_slug","description":"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."},{"name":"list_marketing_posters","description":"List an event's saved marketing posters (poster grids of speaker/sponsor/attendee cards, newest first)."},{"name":"create_marketing_poster","description":"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 t"},{"name":"update_marketing_poster","description":"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 "},{"name":"delete_marketing_poster","description":"Delete a marketing poster by id."},{"name":"list_content","description":"List an event's content items (slides, documents, assets) — or one entity's content only: pass entity_type ('speaker', 'sponsor' or 'schedule') + entity_id."},{"name":"upload_entity_content","description":"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 ser"},{"name":"archive_entity_content","description":"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 "},{"name":"list_news","description":"List news items for an event."},{"name":"create_news","description":"Post a news item to an event's news feed (organisers). notify=True (default) also push-notifies everyone linked to the event."},{"name":"list_polls","description":"List polls for an event (open polls with anonymous results; include_closed=True to see closed ones too)."},{"name":"create_poll","description":"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"},{"name":"list_chat_messages","description":"List chat messages for an event-wide channel (oldest last). Optional `peer` for a DM thread, `after` ISO timestamp to poll for new messages."},{"name":"list_chat_conversations","description":"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"},{"name":"send_chat_message","description":"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 chan"},{"name":"delete_chat_message","description":"Delete a chat message (your own; organisers can delete any)."},{"name":"list_notifications","description":"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 us"},{"name":"mark_notification_read","description":"Mark one of the user's notifications as read (get ids from list_notifications)."},{"name":"get_my_labels","description":"Get the logged-in user's areas-of-interest labels for an event (e.g. ['AI', 'Fintech']) — what they're interested in / following there."},{"name":"set_my_labels","description":"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 t"},{"name":"list_attendees","description":"List attendees for an event (paginated). Optional `search` by name/email, `state` filter (e.g. 'complete')."},{"name":"get_attendee","description":"Get one attendee by id (profile, ticket, check-in state)."},{"name":"check_in_attendees","description":"Check in attendees in bulk. attendee_ids are ids from list_attendees."},{"name":"void_attendee","description":"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."},{"name":"update_attendee","description":"Update an attendee's details. Pass only the fields to change (first_name, last_name, email, phone_number, company_name, job_title)."},{"name":"create_event","description":"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."},{"name":"update_event","description":"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."},{"name":"set_event_image","description":"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"},{"name":"create_checkout","description":"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"},{"name":"get_billing_portal_url","description":"Get the user's Polar billing-portal URL — manage payments, receipts and subscriptions. Open the returned URL in a browser."}],"toolCount":76,"toolsHash":"80c4c33d82a032836d77b14fc1edfbe0199a22fa3ba9ac84a8ba5c805bd6eb04","serverName":"confbuilder","capabilities":["logging","prompts","resources","tools"],"serverVersion":"4.0.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T22:24:43.892Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":28,"error":null,"detail":{"tools":[{"name":"request_login_code","description":"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 whe"},{"name":"verify_login_code","description":"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 n"},{"name":"me","description":"Profile of the logged-in user (id, name, email, team_ids), via the Authorization header token."},{"name":"list_teams","description":"List the user's teams (id + name). Use a team_id when creating an event."},{"name":"find_events","description":"Find events the user can access. Optional free-text query `q`. Returns id/title/dates — chain the id into other tools."},{"name":"get_event","description":"Get one event by id (full detail: modules, speakers, sponsors, schedules)."},{"name":"get_event_modules","description":"List an event's modules with their enabled state (speaker, schedule, content, attendee, app)."},{"name":"toggle_event_module","description":"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 wit"},{"name":"list_event_members","description":"List the people with direct access to an event: user_id, name, email, role ('event:admin'/'event:editor'/'event:viewer'/'speaker'), invitation status ('active'/"},{"name":"invite_event_member","description":"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), 'e"},{"name":"update_event_member","description":"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"},{"name":"remove_event_member","description":"Remove a member's access to an event (their speaker links are not affected). Get user_id from list_event_members."},{"name":"accept_event_invitation","description":"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>'."},{"name":"list_speakers","description":"List speakers for an event (paginated). Optional form_type filter, e.g. 'speaker-intake' or 'call-for-speakers'."},{"name":"get_speaker","description":"Get one speaker by id (bio, talk title, headshot, logos, links)."},{"name":"create_speaker","description":"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_im"},{"name":"update_speaker","description":"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_appr"},{"name":"upload_speaker_image","description":"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."},{"name":"delete_speaker","description":"Delete a speaker from an event. Permanent — removes their talk links, content and images."},{"name":"send_speaker_login_link","description":"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 /"},{"name":"list_sponsors","description":"List sponsors for an event (paginated). Optional free-text query `q`."},{"name":"get_sponsor","description":"Get one sponsor by id (company info, contacts, logos, status)."},{"name":"create_sponsor","description":"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 value"},{"name":"delete_sponsor","description":"Delete a sponsor from an event. Permanent — removes their logo, links and card images."},{"name":"list_sponsor_categories","description":"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 w"},{"name":"update_sponsor","description":"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 "},{"name":"upload_sponsor_image","description":"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 i"},{"name":"list_schedules","description":"List schedules (tracks) for an event."},{"name":"get_schedule","description":"Get one schedule by id (with its activities)."},{"name":"create_schedule","description":"Create a schedule (track) for an event. Optional name (default 'Event Schedule'), schedule_type (default 'detailed') and location."},{"name":"update_schedule","description":"Update a schedule (track): name, schedule_type or location. Activities are managed separately."},{"name":"delete_event","description":"Delete an event (removes it from listings; payments preserved for audit)."},{"name":"publish_schedule","description":"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."},{"name":"delete_schedule","description":"Delete a schedule (track) and all its activities and versions."},{"name":"list_activities","description":"List activities (sessions/talks) in one schedule."},{"name":"create_activity","description":"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, n"},{"name":"update_activity","description":"Update a session (activity). Pass only the fields to change; setting speaker_ids/sponsor_ids replaces the linked speakers/sponsors."},{"name":"delete_activity","description":"Delete an activity (session) from a schedule."},{"name":"set_promo_config","description":"Create or update an event's card design config (upsert by event_id + promo_type). promo_type: 'website' (speaker website cards), 'sponsor-website' (sponsor webs"},{"name":"get_promo_config","description":"Get an event's card design config. Optional promo_type filter ('website', 'sponsor-website', 'promo', 'sponsor-promo'); without it returns the event's first con"},{"name":"list_card_presets","description":"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."},{"name":"set_form_config","description":"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 t"},{"name":"get_form_config","description":"Get an event's intake form config (fields + metadata). Optional form_type filter ('speaker-info', 'sponsor-info', 'call-for-speakers'); without it returns the f"},{"name":"get_website","description":"Get an event's website-builder state: config (the section/theme draft JSON), slug (claimed address, e.g. summit2026 gives summit2026.confbuilder.com), published"},{"name":"save_website","description":"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 askin"},{"name":"publish_website","description":"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"},{"name":"check_website_slug","description":"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."},{"name":"list_marketing_posters","description":"List an event's saved marketing posters (poster grids of speaker/sponsor/attendee cards, newest first)."},{"name":"create_marketing_poster","description":"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 t"},{"name":"update_marketing_poster","description":"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 "},{"name":"delete_marketing_poster","description":"Delete a marketing poster by id."},{"name":"list_content","description":"List an event's content items (slides, documents, assets) — or one entity's content only: pass entity_type ('speaker', 'sponsor' or 'schedule') + entity_id."},{"name":"upload_entity_content","description":"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 ser"},{"name":"archive_entity_content","description":"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 "},{"name":"list_news","description":"List news items for an event."},{"name":"create_news","description":"Post a news item to an event's news feed (organisers). notify=True (default) also push-notifies everyone linked to the event."},{"name":"list_polls","description":"List polls for an event (open polls with anonymous results; include_closed=True to see closed ones too)."},{"name":"create_poll","description":"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"},{"name":"list_chat_messages","description":"List chat messages for an event-wide channel (oldest last). Optional `peer` for a DM thread, `after` ISO timestamp to poll for new messages."},{"name":"list_chat_conversations","description":"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"},{"name":"send_chat_message","description":"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 chan"},{"name":"delete_chat_message","description":"Delete a chat message (your own; organisers can delete any)."},{"name":"list_notifications","description":"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 us"},{"name":"mark_notification_read","description":"Mark one of the user's notifications as read (get ids from list_notifications)."},{"name":"get_my_labels","description":"Get the logged-in user's areas-of-interest labels for an event (e.g. ['AI', 'Fintech']) — what they're interested in / following there."},{"name":"set_my_labels","description":"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 t"},{"name":"list_attendees","description":"List attendees for an event (paginated). Optional `search` by name/email, `state` filter (e.g. 'complete')."},{"name":"get_attendee","description":"Get one attendee by id (profile, ticket, check-in state)."},{"name":"check_in_attendees","description":"Check in attendees in bulk. attendee_ids are ids from list_attendees."},{"name":"void_attendee","description":"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."},{"name":"update_attendee","description":"Update an attendee's details. Pass only the fields to change (first_name, last_name, email, phone_number, company_name, job_title)."},{"name":"create_event","description":"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."},{"name":"update_event","description":"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."},{"name":"set_event_image","description":"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"},{"name":"create_checkout","description":"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"},{"name":"get_billing_portal_url","description":"Get the user's Polar billing-portal URL — manage payments, receipts and subscriptions. Open the returned URL in a browser."}],"toolCount":76,"toolsHash":"80c4c33d82a032836d77b14fc1edfbe0199a22fa3ba9ac84a8ba5c805bd6eb04","serverName":"confbuilder","capabilities":["logging","prompts","resources","tools"],"serverVersion":"4.0.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T16:28:20.432Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":26,"error":null,"detail":{"tools":[{"name":"request_login_code","description":"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 whe"},{"name":"verify_login_code","description":"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 n"},{"name":"me","description":"Profile of the logged-in user (id, name, email, team_ids), via the Authorization header token."},{"name":"list_teams","description":"List the user's teams (id + name). Use a team_id when creating an event."},{"name":"find_events","description":"Find events the user can access. Optional free-text query `q`. Returns id/title/dates — chain the id into other tools."},{"name":"get_event","description":"Get one event by id (full detail: modules, speakers, sponsors, schedules)."},{"name":"get_event_modules","description":"List an event's modules with their enabled state (speaker, schedule, content, attendee, app)."},{"name":"toggle_event_module","description":"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 wit"},{"name":"list_event_members","description":"List the people with direct access to an event: user_id, name, email, role ('event:admin'/'event:editor'/'event:viewer'/'speaker'), invitation status ('active'/"},{"name":"invite_event_member","description":"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), 'e"},{"name":"update_event_member","description":"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"},{"name":"remove_event_member","description":"Remove a member's access to an event (their speaker links are not affected). Get user_id from list_event_members."},{"name":"accept_event_invitation","description":"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>'."},{"name":"list_speakers","description":"List speakers for an event (paginated). Optional form_type filter, e.g. 'speaker-intake' or 'call-for-speakers'."},{"name":"get_speaker","description":"Get one speaker by id (bio, talk title, headshot, logos, links)."},{"name":"create_speaker","description":"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_im"},{"name":"update_speaker","description":"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_appr"},{"name":"upload_speaker_image","description":"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."},{"name":"delete_speaker","description":"Delete a speaker from an event. Permanent — removes their talk links, content and images."},{"name":"send_speaker_login_link","description":"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 /"},{"name":"list_sponsors","description":"List sponsors for an event (paginated). Optional free-text query `q`."},{"name":"get_sponsor","description":"Get one sponsor by id (company info, contacts, logos, status)."},{"name":"create_sponsor","description":"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 value"},{"name":"delete_sponsor","description":"Delete a sponsor from an event. Permanent — removes their logo, links and card images."},{"name":"list_sponsor_categories","description":"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 w"},{"name":"update_sponsor","description":"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 "},{"name":"upload_sponsor_image","description":"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 i"},{"name":"list_schedules","description":"List schedules (tracks) for an event."},{"name":"get_schedule","description":"Get one schedule by id (with its activities)."},{"name":"create_schedule","description":"Create a schedule (track) for an event. Optional name (default 'Event Schedule'), schedule_type (default 'detailed') and location."},{"name":"update_schedule","description":"Update a schedule (track): name, schedule_type or location. Activities are managed separately."},{"name":"delete_event","description":"Delete an event (removes it from listings; payments preserved for audit)."},{"name":"publish_schedule","description":"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."},{"name":"delete_schedule","description":"Delete a schedule (track) and all its activities and versions."},{"name":"list_activities","description":"List activities (sessions/talks) in one schedule."},{"name":"create_activity","description":"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, n"},{"name":"update_activity","description":"Update a session (activity). Pass only the fields to change; setting speaker_ids/sponsor_ids replaces the linked speakers/sponsors."},{"name":"delete_activity","description":"Delete an activity (session) from a schedule."},{"name":"set_promo_config","description":"Create or update an event's card design config (upsert by event_id + promo_type). promo_type: 'website' (speaker website cards), 'sponsor-website' (sponsor webs"},{"name":"get_promo_config","description":"Get an event's card design config. Optional promo_type filter ('website', 'sponsor-website', 'promo', 'sponsor-promo'); without it returns the event's first con"},{"name":"list_card_presets","description":"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."},{"name":"set_form_config","description":"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 t"},{"name":"get_form_config","description":"Get an event's intake form config (fields + metadata). Optional form_type filter ('speaker-info', 'sponsor-info', 'call-for-speakers'); without it returns the f"},{"name":"get_website","description":"Get an event's website-builder state: config (the section/theme draft JSON), slug (claimed address, e.g. summit2026 gives summit2026.confbuilder.com), published"},{"name":"save_website","description":"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 askin"},{"name":"publish_website","description":"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"},{"name":"check_website_slug","description":"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."},{"name":"list_marketing_posters","description":"List an event's saved marketing posters (poster grids of speaker/sponsor/attendee cards, newest first)."},{"name":"create_marketing_poster","description":"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 t"},{"name":"update_marketing_poster","description":"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 "},{"name":"delete_marketing_poster","description":"Delete a marketing poster by id."},{"name":"list_content","description":"List an event's content items (slides, documents, assets) — or one entity's content only: pass entity_type ('speaker', 'sponsor' or 'schedule') + entity_id."},{"name":"upload_entity_content","description":"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 ser"},{"name":"archive_entity_content","description":"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 "},{"name":"list_news","description":"List news items for an event."},{"name":"create_news","description":"Post a news item to an event's news feed (organisers). notify=True (default) also push-notifies everyone linked to the event."},{"name":"list_polls","description":"List polls for an event (open polls with anonymous results; include_closed=True to see closed ones too)."},{"name":"create_poll","description":"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"},{"name":"list_chat_messages","description":"List chat messages for an event-wide channel (oldest last). Optional `peer` for a DM thread, `after` ISO timestamp to poll for new messages."},{"name":"list_chat_conversations","description":"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"},{"name":"send_chat_message","description":"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 chan"},{"name":"delete_chat_message","description":"Delete a chat message (your own; organisers can delete any)."},{"name":"list_notifications","description":"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 us"},{"name":"mark_notification_read","description":"Mark one of the user's notifications as read (get ids from list_notifications)."},{"name":"get_my_labels","description":"Get the logged-in user's areas-of-interest labels for an event (e.g. ['AI', 'Fintech']) — what they're interested in / following there."},{"name":"set_my_labels","description":"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 t"},{"name":"list_attendees","description":"List attendees for an event (paginated). Optional `search` by name/email, `state` filter (e.g. 'complete')."},{"name":"get_attendee","description":"Get one attendee by id (profile, ticket, check-in state)."},{"name":"check_in_attendees","description":"Check in attendees in bulk. attendee_ids are ids from list_attendees."},{"name":"void_attendee","description":"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."},{"name":"update_attendee","description":"Update an attendee's details. Pass only the fields to change (first_name, last_name, email, phone_number, company_name, job_title)."},{"name":"create_event","description":"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."},{"name":"update_event","description":"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."},{"name":"set_event_image","description":"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"},{"name":"create_checkout","description":"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"},{"name":"get_billing_portal_url","description":"Get the user's Polar billing-portal URL — manage payments, receipts and subscriptions. Open the returned URL in a browser."}],"toolCount":76,"toolsHash":"80c4c33d82a032836d77b14fc1edfbe0199a22fa3ba9ac84a8ba5c805bd6eb04","serverName":"confbuilder","capabilities":["logging","prompts","resources","tools"],"serverVersion":"4.0.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T09:27:14.876Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":29,"error":null,"detail":{"tools":[{"name":"request_login_code","description":"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 whe"},{"name":"verify_login_code","description":"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 n"},{"name":"me","description":"Profile of the logged-in user (id, name, email, team_ids), via the Authorization header token."},{"name":"list_teams","description":"List the user's teams (id + name). Use a team_id when creating an event."},{"name":"find_events","description":"Find events the user can access. Optional free-text query `q`. Returns id/title/dates — chain the id into other tools."},{"name":"get_event","description":"Get one event by id (full detail: modules, speakers, sponsors, schedules)."},{"name":"get_event_modules","description":"List an event's modules with their enabled state (speaker, schedule, content, attendee, app)."},{"name":"toggle_event_module","description":"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 wit"},{"name":"list_event_members","description":"List the people with direct access to an event: user_id, name, email, role ('event:admin'/'event:editor'/'event:viewer'/'speaker'), invitation status ('active'/"},{"name":"invite_event_member","description":"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), 'e"},{"name":"update_event_member","description":"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"},{"name":"remove_event_member","description":"Remove a member's access to an event (their speaker links are not affected). Get user_id from list_event_members."},{"name":"accept_event_invitation","description":"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>'."},{"name":"list_speakers","description":"List speakers for an event (paginated). Optional form_type filter, e.g. 'speaker-intake' or 'call-for-speakers'."},{"name":"get_speaker","description":"Get one speaker by id (bio, talk title, headshot, logos, links)."},{"name":"create_speaker","description":"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_im"},{"name":"update_speaker","description":"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_appr"},{"name":"upload_speaker_image","description":"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."},{"name":"delete_speaker","description":"Delete a speaker from an event. Permanent — removes their talk links, content and images."},{"name":"send_speaker_login_link","description":"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 /"},{"name":"list_sponsors","description":"List sponsors for an event (paginated). Optional free-text query `q`."},{"name":"get_sponsor","description":"Get one sponsor by id (company info, contacts, logos, status)."},{"name":"create_sponsor","description":"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 value"},{"name":"delete_sponsor","description":"Delete a sponsor from an event. Permanent — removes their logo, links and card images."},{"name":"list_sponsor_categories","description":"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 w"},{"name":"update_sponsor","description":"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 "},{"name":"upload_sponsor_image","description":"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 i"},{"name":"list_schedules","description":"List schedules (tracks) for an event."},{"name":"get_schedule","description":"Get one schedule by id (with its activities)."},{"name":"create_schedule","description":"Create a schedule (track) for an event. Optional name (default 'Event Schedule'), schedule_type (default 'detailed') and location."},{"name":"update_schedule","description":"Update a schedule (track): name, schedule_type or location. Activities are managed separately."},{"name":"delete_event","description":"Delete an event (removes it from listings; payments preserved for audit)."},{"name":"publish_schedule","description":"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."},{"name":"delete_schedule","description":"Delete a schedule (track) and all its activities and versions."},{"name":"list_activities","description":"List activities (sessions/talks) in one schedule."},{"name":"create_activity","description":"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, n"},{"name":"update_activity","description":"Update a session (activity). Pass only the fields to change; setting speaker_ids/sponsor_ids replaces the linked speakers/sponsors."},{"name":"delete_activity","description":"Delete an activity (session) from a schedule."},{"name":"set_promo_config","description":"Create or update an event's card design config (upsert by event_id + promo_type). promo_type: 'website' (speaker website cards), 'sponsor-website' (sponsor webs"},{"name":"get_promo_config","description":"Get an event's card design config. Optional promo_type filter ('website', 'sponsor-website', 'promo', 'sponsor-promo'); without it returns the event's first con"},{"name":"list_card_presets","description":"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."},{"name":"set_form_config","description":"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 t"},{"name":"get_form_config","description":"Get an event's intake form config (fields + metadata). Optional form_type filter ('speaker-info', 'sponsor-info', 'call-for-speakers'); without it returns the f"},{"name":"get_website","description":"Get an event's website-builder state: config (the section/theme draft JSON), slug (claimed address, e.g. summit2026 gives summit2026.confbuilder.com), published"},{"name":"save_website","description":"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 askin"},{"name":"publish_website","description":"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"},{"name":"check_website_slug","description":"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."},{"name":"list_marketing_posters","description":"List an event's saved marketing posters (poster grids of speaker/sponsor/attendee cards, newest first)."},{"name":"create_marketing_poster","description":"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 t"},{"name":"update_marketing_poster","description":"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 "},{"name":"delete_marketing_poster","description":"Delete a marketing poster by id."},{"name":"list_content","description":"List an event's content items (slides, documents, assets) — or one entity's content only: pass entity_type ('speaker', 'sponsor' or 'schedule') + entity_id."},{"name":"upload_entity_content","description":"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 ser"},{"name":"archive_entity_content","description":"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 "},{"name":"list_news","description":"List news items for an event."},{"name":"create_news","description":"Post a news item to an event's news feed (organisers). notify=True (default) also push-notifies everyone linked to the event."},{"name":"list_polls","description":"List polls for an event (open polls with anonymous results; include_closed=True to see closed ones too)."},{"name":"create_poll","description":"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"},{"name":"list_chat_messages","description":"List chat messages for an event-wide channel (oldest last). Optional `peer` for a DM thread, `after` ISO timestamp to poll for new messages."},{"name":"list_chat_conversations","description":"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"},{"name":"send_chat_message","description":"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 chan"},{"name":"delete_chat_message","description":"Delete a chat message (your own; organisers can delete any)."},{"name":"list_notifications","description":"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 us"},{"name":"mark_notification_read","description":"Mark one of the user's notifications as read (get ids from list_notifications)."},{"name":"get_my_labels","description":"Get the logged-in user's areas-of-interest labels for an event (e.g. ['AI', 'Fintech']) — what they're interested in / following there."},{"name":"set_my_labels","description":"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 t"},{"name":"list_attendees","description":"List attendees for an event (paginated). Optional `search` by name/email, `state` filter (e.g. 'complete')."},{"name":"get_attendee","description":"Get one attendee by id (profile, ticket, check-in state)."},{"name":"check_in_attendees","description":"Check in attendees in bulk. attendee_ids are ids from list_attendees."},{"name":"void_attendee","description":"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."},{"name":"update_attendee","description":"Update an attendee's details. Pass only the fields to change (first_name, last_name, email, phone_number, company_name, job_title)."},{"name":"create_event","description":"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."},{"name":"update_event","description":"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."},{"name":"set_event_image","description":"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"},{"name":"create_checkout","description":"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"},{"name":"get_billing_portal_url","description":"Get the user's Polar billing-portal URL — manage payments, receipts and subscriptions. Open the returned URL in a browser."}],"toolCount":76,"toolsHash":"80c4c33d82a032836d77b14fc1edfbe0199a22fa3ba9ac84a8ba5c805bd6eb04","serverName":"confbuilder","capabilities":["logging","prompts","resources","tools"],"serverVersion":"4.0.11","protocolVersion":"2025-06-18"}}],"tools":[{"name":"request_login_code","description":"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 whe"},{"name":"verify_login_code","description":"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 n"},{"name":"me","description":"Profile of the logged-in user (id, name, email, team_ids), via the Authorization header token."},{"name":"list_teams","description":"List the user's teams (id + name). Use a team_id when creating an event."},{"name":"find_events","description":"Find events the user can access. Optional free-text query `q`. Returns id/title/dates — chain the id into other tools."},{"name":"get_event","description":"Get one event by id (full detail: modules, speakers, sponsors, schedules)."},{"name":"get_event_modules","description":"List an event's modules with their enabled state (speaker, schedule, content, attendee, app)."},{"name":"toggle_event_module","description":"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 wit"},{"name":"list_event_members","description":"List the people with direct access to an event: user_id, name, email, role ('event:admin'/'event:editor'/'event:viewer'/'speaker'), invitation status ('active'/"},{"name":"invite_event_member","description":"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), 'e"},{"name":"update_event_member","description":"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"},{"name":"remove_event_member","description":"Remove a member's access to an event (their speaker links are not affected). Get user_id from list_event_members."},{"name":"accept_event_invitation","description":"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>'."},{"name":"list_speakers","description":"List speakers for an event (paginated). Optional form_type filter, e.g. 'speaker-intake' or 'call-for-speakers'."},{"name":"get_speaker","description":"Get one speaker by id (bio, talk title, headshot, logos, links)."},{"name":"create_speaker","description":"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_im"},{"name":"update_speaker","description":"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_appr"},{"name":"upload_speaker_image","description":"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."},{"name":"delete_speaker","description":"Delete a speaker from an event. Permanent — removes their talk links, content and images."},{"name":"send_speaker_login_link","description":"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 /"},{"name":"list_sponsors","description":"List sponsors for an event (paginated). Optional free-text query `q`."},{"name":"get_sponsor","description":"Get one sponsor by id (company info, contacts, logos, status)."},{"name":"create_sponsor","description":"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 value"},{"name":"delete_sponsor","description":"Delete a sponsor from an event. Permanent — removes their logo, links and card images."},{"name":"list_sponsor_categories","description":"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 w"},{"name":"update_sponsor","description":"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 "},{"name":"upload_sponsor_image","description":"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 i"},{"name":"list_schedules","description":"List schedules (tracks) for an event."},{"name":"get_schedule","description":"Get one schedule by id (with its activities)."},{"name":"create_schedule","description":"Create a schedule (track) for an event. Optional name (default 'Event Schedule'), schedule_type (default 'detailed') and location."},{"name":"update_schedule","description":"Update a schedule (track): name, schedule_type or location. Activities are managed separately."},{"name":"delete_event","description":"Delete an event (removes it from listings; payments preserved for audit)."},{"name":"publish_schedule","description":"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."},{"name":"delete_schedule","description":"Delete a schedule (track) and all its activities and versions."},{"name":"list_activities","description":"List activities (sessions/talks) in one schedule."},{"name":"create_activity","description":"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, n"},{"name":"update_activity","description":"Update a session (activity). Pass only the fields to change; setting speaker_ids/sponsor_ids replaces the linked speakers/sponsors."},{"name":"delete_activity","description":"Delete an activity (session) from a schedule."},{"name":"set_promo_config","description":"Create or update an event's card design config (upsert by event_id + promo_type). promo_type: 'website' (speaker website cards), 'sponsor-website' (sponsor webs"},{"name":"get_promo_config","description":"Get an event's card design config. Optional promo_type filter ('website', 'sponsor-website', 'promo', 'sponsor-promo'); without it returns the event's first con"},{"name":"list_card_presets","description":"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."},{"name":"set_form_config","description":"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 t"},{"name":"get_form_config","description":"Get an event's intake form config (fields + metadata). Optional form_type filter ('speaker-info', 'sponsor-info', 'call-for-speakers'); without it returns the f"},{"name":"get_website","description":"Get an event's website-builder state: config (the section/theme draft JSON), slug (claimed address, e.g. summit2026 gives summit2026.confbuilder.com), published"},{"name":"save_website","description":"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 askin"},{"name":"publish_website","description":"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"},{"name":"check_website_slug","description":"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."},{"name":"list_marketing_posters","description":"List an event's saved marketing posters (poster grids of speaker/sponsor/attendee cards, newest first)."},{"name":"create_marketing_poster","description":"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 t"},{"name":"update_marketing_poster","description":"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 "},{"name":"delete_marketing_poster","description":"Delete a marketing poster by id."},{"name":"list_content","description":"List an event's content items (slides, documents, assets) — or one entity's content only: pass entity_type ('speaker', 'sponsor' or 'schedule') + entity_id."},{"name":"upload_entity_content","description":"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 ser"},{"name":"archive_entity_content","description":"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 "},{"name":"list_news","description":"List news items for an event."},{"name":"create_news","description":"Post a news item to an event's news feed (organisers). notify=True (default) also push-notifies everyone linked to the event."},{"name":"list_polls","description":"List polls for an event (open polls with anonymous results; include_closed=True to see closed ones too)."},{"name":"create_poll","description":"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"},{"name":"list_chat_messages","description":"List chat messages for an event-wide channel (oldest last). Optional `peer` for a DM thread, `after` ISO timestamp to poll for new messages."},{"name":"list_chat_conversations","description":"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"},{"name":"send_chat_message","description":"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 chan"},{"name":"delete_chat_message","description":"Delete a chat message (your own; organisers can delete any)."},{"name":"list_notifications","description":"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 us"},{"name":"mark_notification_read","description":"Mark one of the user's notifications as read (get ids from list_notifications)."},{"name":"get_my_labels","description":"Get the logged-in user's areas-of-interest labels for an event (e.g. ['AI', 'Fintech']) — what they're interested in / following there."},{"name":"set_my_labels","description":"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 t"},{"name":"list_attendees","description":"List attendees for an event (paginated). Optional `search` by name/email, `state` filter (e.g. 'complete')."},{"name":"get_attendee","description":"Get one attendee by id (profile, ticket, check-in state)."},{"name":"check_in_attendees","description":"Check in attendees in bulk. attendee_ids are ids from list_attendees."},{"name":"void_attendee","description":"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."},{"name":"update_attendee","description":"Update an attendee's details. Pass only the fields to change (first_name, last_name, email, phone_number, company_name, job_title)."},{"name":"create_event","description":"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."},{"name":"update_event","description":"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."},{"name":"set_event_image","description":"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"},{"name":"create_checkout","description":"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"},{"name":"get_billing_portal_url","description":"Get the user's Polar billing-portal URL — manage payments, receipts and subscriptions. Open the returned URL in a browser."}],"package":null,"toolSurface":{"id":"ts_2kjxwycepy8f","endpointId":"ep_9khc5gddhnb7","hash":"80c4c33d82a032836d77b14fc1edfbe0199a22fa3ba9ac84a8ba5c805bd6eb04","toolCount":76,"serverName":"confbuilder","serverVersion":"4.0.11","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-06T01:26:03.249Z","lastSeenAt":"2026-10-09T19:27:10.232Z","observations":15,"toolNames":["request_login_code","verify_login_code","me","list_teams","find_events","get_event","get_event_modules","toggle_event_module","list_event_members","invite_event_member","update_event_member","remove_event_member","accept_event_invitation","list_speakers","get_speaker","create_speaker","update_speaker","upload_speaker_image","delete_speaker","send_speaker_login_link","list_sponsors","get_sponsor","create_sponsor","delete_sponsor","list_sponsor_categories","update_sponsor","upload_sponsor_image","list_schedules","get_schedule","create_schedule","update_schedule","delete_event","publish_schedule","delete_schedule","list_activities","create_activity","update_activity","delete_activity","set_promo_config","get_promo_config","list_card_presets","set_form_config","get_form_config","get_website","save_website","publish_website","check_website_slug","list_marketing_posters","create_marketing_poster","update_marketing_poster","delete_marketing_poster","list_content","upload_entity_content","archive_entity_content","list_news","create_news","list_polls","create_poll","list_chat_messages","list_chat_conversations","send_chat_message","delete_chat_message","list_notifications","mark_notification_read","get_my_labels","set_my_labels","list_attendees","get_attendee","check_in_attendees","void_attendee","update_attendee","create_event","update_event","set_event_image","create_checkout","get_billing_portal_url"],"distinctSurfaces":2},"endpointFacts":[{"id":"ep_9khc5gddhnb7","url":"https://mcp.seamlessevents.io/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-08T12:24:57.022Z","auth":{"observedAt":"2026-10-08T12:24:57.120Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://mcp.seamlessevents.io/.well-known/oauth-protected-resource/mcp","resource":"https://mcp.confbuilder.com/mcp","authorizationServers":["https://mcp.confbuilder.com/"],"scopesSupported":[]},"authorizationServer":{"url":"https://mcp.confbuilder.com/.well-known/oauth-authorization-server","issuer":"https://mcp.confbuilder.com/","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":true},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":true,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-08T12:24:57.136Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"mcp.seamlessevents.io","issuer":{"commonName":"WR3","organization":"Google Trust Services"},"validFrom":"2026-09-24T08:27:07.000Z","validTo":"2026-12-23T09:18:19.000Z","daysToExpiry":74,"sanCount":1,"fingerprint256":"D7:1A:4D:52:03:07:5B:7C:1E:17:C5:C5:34:02:4E:B9:C1:E0:9C:EE:AB:E3:1C:F0:71:54:D7:CD:35:AC:85:2B"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.seamlessevents.mcp/confbuilder","url":"https://registry.modelcontextprotocol.io/v0/servers/io.seamlessevents.mcp%2Fconfbuilder","firstSeenAt":"2026-10-02T22:21:51.615Z","fetchedAt":"2026-10-08T17:21:42.305Z","normalizedAt":"2026-10-08T17:21:42.305Z"}]},"firstSeenAt":"2026-10-02T22:21:51.615Z","updatedAt":"2026-10-09T19:29:29.820Z"}