Skip to content

MCP Server

The Sessionboard MCP (Model Context Protocol) server lets AI assistants like Claude, ChatGPT, Microsoft Copilot, and Google Gemini query and manage your event data directly. Built on the open Model Context Protocol standard, it exposes 39 tools covering search, reads, natural-language queries, cited answers about an event, reports and dashboards, and write operations.

This page is the technical reference. If you just want to connect an assistant, the Help Center has friendlier step-by-step guides with screenshots — start at the AI assistants overview:

  • Connect Claude — including Sessionboard’s listing in Claude’s connector directory
  • Connect ChatGPT — install the Sessionboard app from ChatGPT’s plugin directory (US), or a developer-mode connector with your regional URL (EU / Middle East)
  • Connect Microsoft Copilot — via a Copilot Studio agent
  • Connect Google Gemini — Gemini app, Gemini Enterprise, or the Gemini CLI

Workflows built on these tools (Agent Skills, one SKILL.md per job, plus a Claude Code plugin) are in the Skills tab.

Model Context Protocol is an open standard that enables AI assistants to securely connect to external data sources and tools. Instead of copying data into prompts, MCP lets the AI query and update your data on demand through a structured interface.

Each Sessionboard region runs its own MCP server. Use the one matching where your organization is hosted:

RegionMCP server URL
United Stateshttps://mcp.sessionboard.com/mcp
Europehttps://mcp-eu.sessionboard.com/mcp
Middle Easthttps://mcp-me.sessionboard.com/mcp

The server uses the streamable HTTP transport and supports OAuth 2.0 with PKCE and dynamic client registration — most clients discover the sign-in flow automatically.

Connect your AI client

Most assistants (Claude, ChatGPT, Copilot Studio, Gemini) connect through their own UI — follow the Help Center guides above. For clients configured by file (Claude Code, Cursor, and similar), add:

{
"mcpServers": {
"sessionboard": {
"url": "https://mcp.sessionboard.com/mcp"
}
}
}

Swap in the EU or Middle East URL from the table above if that’s where your organization is hosted.

Sign in

On first use the client walks you through Sessionboard’s OAuth sign-in and organization consent automatically — no token to copy. A client that cannot complete that sign-in cannot use the hosted MCP URL. Scripts call the public API with an API token instead.

Start querying

Ask your AI assistant questions about your event data in natural language. The assistant uses the MCP tools to query Sessionboard and return results.

The MCP server groups its tools as below. Write operations use a manage_* pattern — one tool per entity with an action parameter to pick the operation (e.g., action: "create").

All tools include MCP annotations for safe AI behavior — read tools are marked readOnlyHint: true, every manage_* tool is marked destructiveHint: true because each can overwrite an existing record through its update action (even the ones with no delete), and all are openWorldHint: false because every tool is bounded to your organization’s data. Clients such as Claude and ChatGPT use these hints to ask for confirmation before a write runs.

Find events, search your data, ask questions in plain English, and explore your schema.

ToolDescription
list_eventsList all events in the organization
find_eventSearch events by name
get_event_overviewEvent summary — session counts, speakers, tracks, status breakdown
searchFull-text search across sessions and speakers with citation URLs
fetchFetch a single search result by ID (pairs with search)
get_schemaBrowse your data model — entities, fields, and relationships
query_dataAsk a question in plain English and get results (AI writes the query for you)
execute_sbqlRun a SbQL query directly with pagination
get_suggestionsGet suggested queries based on your data
get_widget_schemaWidget types, configs, and grid layout rules for dashboards
ask_eventAsk a question about one event and get a cited answer — see Asking about an event. Needs read:ask

Fetch sessions and contacts. All read-only and paginated.

ToolDescription
list_sessionsList sessions for an event (paginated, up to 100 per page)
get_sessionGet a single session by ID with full details
list_contactsList contacts for an event (paginated, up to 100 per page)
get_contactGet a single contact by ID with full details

Read counterparts to the manage_* tools — safe to call without any write scopes.

ToolDescription
list_metadataRooms, tracks, tags, formats, levels, languages, statuses, and custom fields
read_agenda_draftsList and inspect agenda drafts
list_draft_sessionsSession placements within a draft
read_event_rulesScheduling rules and constraints
read_personasEvaluation personas
read_event_dashboardsEvent-scoped dashboards
list_event_reportsEvent-scoped saved reports
read_org_dashboardsOrg-level dashboards (cross-event)
list_org_reportsOrg-level saved reports (cross-event)

Each manage_* tool handles all operations for an entity — create, update, delete, and more — using an action parameter. For example, manage_session with action: "create" creates a session, while action: "update" updates one.

ToolActionsScopeDescription
manage_metadatalist, create, updatewrite:metadata / write:fieldsRooms, tracks, tags, formats, levels, languages, statuses, and custom fields
manage_sessioncreate, update, restore, update_fieldswrite:sessionsSession CRUD + custom field values
manage_contactcreate, update, restorewrite:contactsContact CRUD (find-or-create by email)
manage_exhibitorcreate, update, restorewrite:exhibitorsExhibitor CRUD
manage_sponsorcreate, update, restorewrite:sponsorsSponsor CRUD
manage_agenda_draftlist, get, create, update, delete, get_changes, commitwrite:eventsAgenda draft lifecycle
manage_draft_sessionslist, create, update, delete, bulkwrite:eventsSession placements in drafts
manage_event_ruleslist, get, create, update, deletewrite:eventsScheduling rules and constraints
manage_personaslist, get, create, update, deletewrite:eventsEvaluation personas
manage_event_dashboardlist, get, create, update, deletewrite:eventsEvent-scoped dashboards
manage_event_widgetcreate, update, deletewrite:eventsEvent dashboard widgets
manage_event_reportlist, run, create, create_from_nl, update, deletewrite:eventsEvent-scoped saved reports
manage_org_dashboardlist, get, create, update, deletewrite:eventsOrg-level dashboards (cross-event)
manage_org_widgetcreate, update, deletewrite:eventsOrg-level dashboard widgets
manage_org_reportlist, run, create, create_from_nl, update, deletewrite:eventsOrg-level saved reports (cross-event)

A webinar’s sharing pieces, the same ones as on the webinar’s After tab in Sessionboard: email signatures for your team (a banner that says “Save your seat” until the start and “Watch the recording” after), share cards, speakers’ personal links and a draft kit of LinkedIn posts for your team. Reads need read:events, changes write:marketing, and the connected user needs the same sharing permissions on the webinar as in Sessionboard. They call the Sharing endpoints. Webinars only.

ToolDescription
get_email_signaturesThe banner, the three signature versions as your team will paste them, whether they are out of date, and the team with each teammate’s link, when they were emailed, opened and copied it, clicks and registrations
make_email_signaturesMake (or remake) the signatures from the webinar as it is now; signatures already pasted pick up the new banner
set_signature_teamAdd teammates (add, user_ids) or take one off (remove, teammate_id); emails no one
send_email_signaturesEmail each teammate a link to copy their signature. Waits for your OK (see below); refused once the webinar has started
get_share_cardsThe six share cards (three with the speakers’ faces), which are on the sharing pages, and whether they are out of date
make_share_cardsMake (or remake) all six cards, or some designs
get_speaker_linksEach speaker’s and co-presenter’s personal tracked link and shares; pending until they have one
give_speaker_linksTurn sharing on and give every speaker a link; emails no one
make_team_kitA draft kit of posts for your team (share cards before the start, clips after), with a link to pick the team and send it; nothing is sent

Try: “Make email signatures for next week’s webinar and add Jordan and Priya to the team” or “Which speakers don’t have a sharing link yet?”

Marketing: preview and edit before it goes out (7 tools)

Section titled “Marketing: preview and edit before it goes out (7 tools)”

So an assistant can show you an email, newsletter, sign-up form or ad before anyone sees it, and change it, without opening Sessionboard. Reads need read:events (event emails) or read:marketing; changes need write:marketing.

ToolDescription
preview_event_emailOne of an event’s or webinar’s lifecycle emails rendered as Sessionboard’s preview draws it: the live version, or the design the assistant proposed (version: proposed), with accessibility warnings. Renders only. Calls Preview a lifecycle email
update_newsletter_issueChange a draft or scheduled issue’s subject, preheader, layout or blocks. get_newsletter_issue returns the rendered issue to show
send_newsletter_testSend the issue to your own inbox only, as subscribers will get it. Not counted and not in results
unschedule_newsletter_issueTake a scheduled issue back to draft before it sends
list_signup_formsEvery sign-up form and recording gate: where it shows, its words, what it asks, its list and double opt-in
update_signup_formChange a form’s words, fields, list, double opt-in or consent text, or archive it. A form on a live page changes at once
update_adsEdit an ad draft (cap, dates, audience, copy) before you approve it. Each edit needs a new approval; nothing spends

Try: “Show me the reminder email you proposed for Thursday’s webinar” or “Send me a test of this month’s newsletter, then hold it until Monday”

The Marketing tools’ descriptions also carry the event rules an assistant should follow: registrations and turnout are different numbers; speakers get their sharing link while there is still time to post before the start, and sharing switches to the recording after; nothing is emailed or posted without your yes; and only your organization’s own first-party data is used.

The self-serve Sessions workspace: one call for speakers per event, your own accept and decline decisions, and the agenda for your website. The tools call the Sessions workspace routes (/v1/sessions-workspace/…, the organization taken from the token); reads need read:sessions, changes write:sessions, and a key restricted to particular events cannot use them. Ids come back in every answer: event_id from get_sessions_home, session ids from list_submissions or get_event_agenda, room, track and format ids from get_event_agenda.

ToolDescription
get_sessions_homeYour plan, every Sessions event with its counts, and whether its call for speakers is open. Start here
get_sessions_eventOne event: dates, where, its call for speakers (link, title, welcome text, closing date), rooms, tracks, sponsors
manage_sessions_eventCreate or update an event: name, dates, timezone, where, and the language speakers read
import_sessions_event_from_urlMake a Sessions event from its public page. Preview with dry_run: true first; a page that redirects says which address to use instead
set_rooms_and_tracksReplace the rooms, tracks and formats, in order (keep one by passing its id)
manage_call_for_speakersChange what speakers see, close the call, or open it. Opening waits for your OK
get_call_questions / manage_call_questionsThe questions on the call; add, create, remove, require or reorder them
list_submissionsSubmissions with speakers, decision, time, room, track and the team’s picks
get_team_picks / set_my_pickEach teammate’s Yes, Maybe or No; your own pick
decide_submissionAccept, waitlist, decline or undecide. Emails no one
manage_program_sessionAdd a session (accepted, or as a submission) or update one: time, room, track, format, sponsor tags. A session can be placed on the agenda in the same call
list_event_speakersEveryone on an accepted session
get_event_agendaThe agenda, its conflicts, and the rooms, tracks, formats and sponsors to choose from
manage_event_sponsorsAdd or remove a sponsor to tag sessions with
preview_event_import / import_event_program / import_event_speakers / import_event_sponsorsPreview and import rows of sessions, speakers or sponsors
publish_event_agendaPublish the agenda and speaker wall to your website (embed snippets). Waits for your OK
get_decision_emails / preview_decision_email / update_decision_emailThe declined and waitlisted emails: read, preview as a speaker gets it, edit
send_decision_emailsEmail declined or waitlisted speakers. Waits for your OK
get_speaker_emailsThe speaker emails plan for accepted speakers: tasks, due date, reminders, each speaker’s progress
update_speaker_emails_plan / pause_speaker_emailsChange the plan; pause or resume every email at once
approve_speaker_emailsApprove the plan so the invites and reminders go. Waits for your OK
list_event_connections / link_event_connection / preview_event_pushThe apps the agenda can be pushed to, the vendor event it is linked to, and what a push would send (blocked says what stops it). A person connects an app with its keys in Sessionboard
push_event_agenda / get_push_historyPush sessions, speakers and the agenda one way. Waits for your OK
get_sessions_marketing / list_session_media / transcribe_session_mediaSpeakers’ share kits, and a session’s recordings and transcripts

Try: “Make our 2027 summit from its web page, add a Main Stage and an AI track, and open the call for speakers” or “Accept the three highest-rated submissions and draft the speaker emails”

Your team’s to-dos in Sessionboard Platform: a title, an assignee, a due date with an optional time, a reminder, and the contacts, sessions, sponsors, exhibitors or groups a task is about. See the Tasks guide. In an organization that uses a self-serve Sessionboard product, these tools answer “Tasks are part of Sessionboard Platform.” instead.

ToolActionsScopeDescription
list_tasks—read:tasksList tasks by event, assignee (me, an email, none, any), status, due (overdue, today, upcoming, none), due dates or linked record; or read one by id
manage_taskcreate, update, complete, reopen, deletewrite:tasksCreate a task (assignee by email, records by id, due_date YYYY-MM-DD plus an optional due_time HH:mm in the event’s time zone, reminder), change it, complete it with a note, reopen or delete it

Try: “What’s on my plate this week?”, “Remind Dana to chase Dr. Okafor’s disclosure by Friday”, “What’s overdue across my events?” or “Mark the AV task done: forms received”.

Everything in Sessionboard CRM — People, Groups (companies, sponsors, exhibitors), tags, imports, connected apps, the pipeline, contracts, exports and hand-offs to the other Sessionboard apps — over the Public API CRM routes. Reads need read:crm, changes write:crm; OAuth clients get both by default. A self-serve CRM account needs a card on file before it imports or adds people: the tools say so and hand you get_card_link (product crm), a Stripe page the person opens. Deleting, archiving, sending, resending and voiding ask you first.

ToolScopeDescription
get_crm_homeread:crmCounts by tag, active contacts against the plan’s limit, setup steps, newest people
find_crm_people, get_crm_person, find_warm_opportunitiesread:crmEveryone the organization knows, one row per email, with tags, companies, pipeline stage and signals
manage_crm_person, tag_crm_people, delete_crm_peoplewrite:crmAdd or change a person, add or remove tags on up to 500, delete (after you say yes)
find_crm_companies, manage_crm_company, tag_crm_companies, link_crm_company_people, delete_crm_companiesread:crm / write:crmGroups and the people in them
import_crm_peoplewrite:crmPreview, then import people or companies from a spreadsheet’s rows; returns each person’s key and each company’s id for the next step
list_crm_sources, discover_crm_people, start_crm_attendee_syncread:crm / write:crmWhat a connected CRM, AMS or event platform holds, compared with your People, and bringing an event’s attendees in
find_crm_contacts, get_crm_contact, add_people_to_crm_contactsread:crm / write:crmThe Contact record behind a speaker or a company’s person
list_crm_tags, manage_crm_tag, tag_crm_contactsread:crm / write:crmYour own tags: list, create, rename, delete, and add or remove them on up to 500 Contacts
add_crm_notewrite:crmA note on a Contact, for anything a standard field doesn’t hold
get_crm_pipeline, add_to_crm_pipeline, move_crm_pipeline_entry, archive_crm_pipeline_entryread:crm / write:crmStages and entries; add by Contact id or person key, move with a note, take off (after you say yes)
list_crm_contract_templates, add_crm_contract_starter, list_crm_contracts, get_crm_contract, send_crm_contract, void_crm_contractread:crm / write:crmTemplates and starters, contracts and signers; sending, resending and voiding only after you say yes
export_crm_contacts, export_crm_listread:crmContacts, People, Groups, the pipeline or contracts as CSV with the list’s own filters (first 1,000 rows)
hand_off_crm_peoplewrite:crmHand a selection to Marketing, Sessions, Learning or Awards as a tag, with the link that opens it there
get_ams_mapping, get_member_snapshot, preview_ams_writeback, run_ams_writebackread:crm / write:crmAn association management system’s field mapping, member snapshot and write-back

Try: “Import this sheet of speakers, tag them speaker and put them in the pipeline for our spring summit”, “Who came to five of our webinars but isn’t in the pipeline?” or “Export everyone tagged sponsor at Acme”.

ask_event answers a question about one event the way an organizer would want it answered. The answer is grounded in the event’s program (sessions, speakers, exhibitors, sponsors), session transcripts, the event’s knowledge and pinned answers, and the Sessionboard Help Center, and it cites its sources with [n] markers listed under Sources. It calls POST /v1/event/{eventId}/ask.

InputRequiredDescription
event_idYesThe event to ask about
questionYesThe question, in plain language (up to 500 characters)
conversation_idNoThe conversation_id from a previous answer, to ask a follow-up in the same thread
langNoAnswer language as a language tag (e.g. en, fr, pt-BR)
  • Scope — needs read:ask. Assistants connected before this scope existed hold only the scopes they were granted; reconnect to grant it.
  • Read-only — marked readOnlyHint: true. Ask never changes the event.
  • Use it for synthesis — “which sessions cover X”, “what did speakers say about Y”, “how do I set up Z”. For exact counts and lists, execute_sbql and query_data are faster and exact.
  • Slow — an answer takes several seconds; the tool waits up to 90 seconds.
  • Follow-ups — the answer ends with a conversation_id. Pass it back to continue the thread.
  • Refusals come back as tool errors — Ask turned off for the event, AI features off, the per-user question limit (with the seconds to wait), the event’s daily Ask budget used up, or a question Ask would not take.
  • Event scoping — All event-scoped tools require event_id (snake_case string).
  • Action selection — Consolidated tools use action to pick the operation (e.g., action: "create").
  • Entity IDs — snake_case: session_id, contact_id, entity_id, draft_id, widget_id, query_id.
  • Optimistic concurrency — Update actions require updated_at (ISO 8601 timestamp from the last read). Returns 409 Conflict if the entity was modified since.

All results are automatically truncated to prevent context window overflow:

  • List results — Capped at 50 items. When truncated, the response includes truncated: true, total_count, and a hint with guidance on pagination.
  • Query results — Capped at 100 rows with truncation metadata.
  • SbQL queries — execute_sbql and query_data default to a 50-row limit. Use the limit parameter for more.

The MCP server also exposes two MCP resources that AI clients can load into context:

URIDescription
sbql://schemaThe SbQL schema — entities, fields, relationships, and format functions
sbql://eventsList of events in the organization with metadata

Pre-built templates that structure the AI’s approach to common report types:

PromptDescription
speaker_rosterGenerate a speaker roster with contact info and session assignments
session_scheduleGenerate a day-by-day session schedule grid
evaluation_summaryGenerate an evaluation/review score analysis
task_statusShow outstanding tasks across speakers and exhibitors

Some Marketing, Learning and Sessions actions reach people outside your team, spend money or publish something public. When an AI assistant asks for one of these through MCP, Sessionboard does not run it. It records a request and answers with a link where a person on your team approves or declines it:

{
"status": "needs_approval",
"approval_id": "49a31154-…",
"url": "https://app.sessionboard.com/marketing/<orgId>/approvals?id=49a31154-…",
"message": "Waiting for your OK in Sessionboard: https://…"
}
  • What waits: launching or resuming a campaign, sending invitations, content kits or email signatures, sending a “Keep everyone engaged” round or offer, publishing an event page, gallery, course or on-demand library, approving ads or raising an ad budget, starting live captions, assigning training, and in Sessions opening the call for speakers, publishing the agenda, pushing it to an app, sending decision emails and approving the speaker emails plan.
  • What runs: drafts, edits to drafts and reads. Credit is never set or granted by an assistant.
  • Approving runs the original request as the person who approved it, with their permissions. Declining records the answer and nothing happens. The assistant sees the outcome the next time it reads the record.
  • Don’t retry. Calling the same tool again creates another request; tell the person where to approve instead.
  • See what waits: list_approvals lists every request still waiting, across Marketing, Learning, Awards and Sessions: what it is, the person’s own words when the assistant passed them (asked), who asked, when, and the link to approve it. It is read-only, and no tool approves or declines anything. It calls GET /v1/marketing/approvals (read:marketing, a key not restricted to particular events).
  • Every assistant action, including the approvals, is listed under Apps › AI assistants in Sessionboard, with who asked and what changed. An admin can pause assistant writes for the organization; while paused, write tools return 423.

When an assistant edits something that already exists (an event page, a Site, a lifecycle email proposal, a newsletter issue, a campaign draft), the answer carries what_changed — one plain sentence per change, with before and after — and kept, which names the call that puts the earlier version back. Before an assistant edits a draft holding someone else’s unpublished work, Sessionboard keeps that draft as a version first. Results reports (get_results, get_advocacy_results, get_field_event_results, get_webinar_outcomes) also carry a story: headline, findings, next move and slide-ready sections, each number citing the field it comes from. Nothing in an edit reaches people; the actions above still wait for your OK.

In Claude and ChatGPT, these Marketing tools draw Sessionboard screens in the conversation, so you can see the work without opening the app. Hosts without screens, such as Claude Code, get the same answer as text.

ToolWhat you see
get_marketing_homeMarketing’s Home: your next event and how it is pacing, active goals, what is waiting for your OK, new sign-ups in the last 7 days, and one next move. Read-only.
get_goal, get_turnoutA goal’s or an event’s pace: registrations so far, the target line and the estimate, with the plan and suggestions. Estimates are labelled as estimates.
get_results, list_report_sponsorsResults: totals, funnel, channels, people sharing, posts, and a sponsor picker that opens one sponsor’s counts-only report.
get_ai_discoveryFound by AI: how many AI answers mention your event, what the assistants said, and what to do next.
list_events_with_status, whos_coming, get_field_event_resultsYour events and webinars, then an in-person event’s guest list and its results.
list_approvalsWhat is waiting for your OK.

Anything that would reach people shows as a Waiting for your OK card. The card’s only button opens Sessionboard, where a person approves or declines. Nothing in the conversation approves, sends or publishes.

  • Org isolation — The SbQL compiler injects org_id into every query from the authenticated token. Prompt injection cannot access other organizations’ data.
  • Your access, not more — The assistant reads as the person who authorized it: what their Sessionboard role allows, in that organization, through the scopes they granted. Query results are not masked; an assistant that asks for contact emails gets them. Write tools need write scopes, and only roles with Connect AI assistants can authorize a connection. See privacy details in the Help Center.
  • Scoped access — Tokens are restricted to specific scopes and optionally to specific events.
  • Audit logging — Every API call is recorded with source, method, response time, and token ID. For ask_event the question text is redacted from the log.

Once connected, you can ask questions like:

  • “How many sessions are accepted for this year’s conference?”
  • “Show me the top 10 speakers by number of sessions.”
  • “What’s the breakdown of sessions by track and status?”
  • “List all sessions that don’t have a room assigned yet.”
  • “Which sessions cover cardiac imaging, and what did the speakers say about it?”
  • “Create a new track called ‘AI & Machine Learning’ with color #4F46E5.”
  • “Build a dashboard showing session counts by status and track.”
  • “Create a draft agenda and schedule the keynote in the Main Hall at 9am.”

Get release notes by email

A short digest on the days something new goes live — each change with a link to its note in the release notes. No marketing, and one click to stop.

Company email addresses only. We’ll send one email to confirm it’s you. Already use Sessionboard? You can also turn this on under Community → What’s new.