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.
What is MCP?
Section titled “What is MCP?”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.
Server URLs by region
Section titled “Server URLs by region”Each Sessionboard region runs its own MCP server. Use the one matching where your organization is hosted:
| Region | MCP server URL |
|---|---|
| United States | https://mcp.sessionboard.com/mcp |
| Europe | https://mcp-eu.sessionboard.com/mcp |
| Middle East | https://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.
Prerequisites
Section titled “Prerequisites”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.
Available tools
Section titled “Available tools”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.
Search & Discovery (11 tools)
Section titled “Search & Discovery (11 tools)”Find events, search your data, ask questions in plain English, and explore your schema.
| Tool | Description |
|---|---|
list_events | List all events in the organization |
find_event | Search events by name |
get_event_overview | Event summary — session counts, speakers, tracks, status breakdown |
search | Full-text search across sessions and speakers with citation URLs |
fetch | Fetch a single search result by ID (pairs with search) |
get_schema | Browse your data model — entities, fields, and relationships |
query_data | Ask a question in plain English and get results (AI writes the query for you) |
execute_sbql | Run a SbQL query directly with pagination |
get_suggestions | Get suggested queries based on your data |
get_widget_schema | Widget types, configs, and grid layout rules for dashboards |
ask_event | Ask a question about one event and get a cited answer — see Asking about an event. Needs read:ask |
Read Details (4 tools)
Section titled “Read Details (4 tools)”Fetch sessions and contacts. All read-only and paginated.
| Tool | Description |
|---|---|
list_sessions | List sessions for an event (paginated, up to 100 per page) |
get_session | Get a single session by ID with full details |
list_contacts | List contacts for an event (paginated, up to 100 per page) |
get_contact | Get a single contact by ID with full details |
Read-Only Lists (9 tools)
Section titled “Read-Only Lists (9 tools)”Read counterparts to the manage_* tools — safe to call without any write scopes.
| Tool | Description |
|---|---|
list_metadata | Rooms, tracks, tags, formats, levels, languages, statuses, and custom fields |
read_agenda_drafts | List and inspect agenda drafts |
list_draft_sessions | Session placements within a draft |
read_event_rules | Scheduling rules and constraints |
read_personas | Evaluation personas |
read_event_dashboards | Event-scoped dashboards |
list_event_reports | Event-scoped saved reports |
read_org_dashboards | Org-level dashboards (cross-event) |
list_org_reports | Org-level saved reports (cross-event) |
Create & Manage (15 tools)
Section titled “Create & Manage (15 tools)”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.
| Tool | Actions | Scope | Description |
|---|---|---|---|
manage_metadata | list, create, update | write:metadata / write:fields | Rooms, tracks, tags, formats, levels, languages, statuses, and custom fields |
manage_session | create, update, restore, update_fields | write:sessions | Session CRUD + custom field values |
manage_contact | create, update, restore | write:contacts | Contact CRUD (find-or-create by email) |
manage_exhibitor | create, update, restore | write:exhibitors | Exhibitor CRUD |
manage_sponsor | create, update, restore | write:sponsors | Sponsor CRUD |
manage_agenda_draft | list, get, create, update, delete, get_changes, commit | write:events | Agenda draft lifecycle |
manage_draft_sessions | list, create, update, delete, bulk | write:events | Session placements in drafts |
manage_event_rules | list, get, create, update, delete | write:events | Scheduling rules and constraints |
manage_personas | list, get, create, update, delete | write:events | Evaluation personas |
manage_event_dashboard | list, get, create, update, delete | write:events | Event-scoped dashboards |
manage_event_widget | create, update, delete | write:events | Event dashboard widgets |
manage_event_report | list, run, create, create_from_nl, update, delete | write:events | Event-scoped saved reports |
manage_org_dashboard | list, get, create, update, delete | write:events | Org-level dashboards (cross-event) |
manage_org_widget | create, update, delete | write:events | Org-level dashboard widgets |
manage_org_report | list, run, create, create_from_nl, update, delete | write:events | Org-level saved reports (cross-event) |
Sharing a webinar (9 tools)
Section titled “Sharing a webinar (9 tools)”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.
| Tool | Description |
|---|---|
get_email_signatures | The 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_signatures | Make (or remake) the signatures from the webinar as it is now; signatures already pasted pick up the new banner |
set_signature_team | Add teammates (add, user_ids) or take one off (remove, teammate_id); emails no one |
send_email_signatures | Email each teammate a link to copy their signature. Waits for your OK (see below); refused once the webinar has started |
get_share_cards | The six share cards (three with the speakers’ faces), which are on the sharing pages, and whether they are out of date |
make_share_cards | Make (or remake) all six cards, or some designs |
get_speaker_links | Each speaker’s and co-presenter’s personal tracked link and shares; pending until they have one |
give_speaker_links | Turn sharing on and give every speaker a link; emails no one |
make_team_kit | A 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.
| Tool | Description |
|---|---|
preview_event_email | One 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_issue | Change a draft or scheduled issue’s subject, preheader, layout or blocks. get_newsletter_issue returns the rendered issue to show |
send_newsletter_test | Send the issue to your own inbox only, as subscribers will get it. Not counted and not in results |
unschedule_newsletter_issue | Take a scheduled issue back to draft before it sends |
list_signup_forms | Every sign-up form and recording gate: where it shows, its words, what it asks, its list and double opt-in |
update_signup_form | Change 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_ads | Edit 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.
Sessionboard Sessions (37 tools)
Section titled “Sessionboard Sessions (37 tools)”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.
| Tool | Description |
|---|---|
get_sessions_home | Your plan, every Sessions event with its counts, and whether its call for speakers is open. Start here |
get_sessions_event | One event: dates, where, its call for speakers (link, title, welcome text, closing date), rooms, tracks, sponsors |
manage_sessions_event | Create or update an event: name, dates, timezone, where, and the language speakers read |
import_sessions_event_from_url | Make 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_tracks | Replace the rooms, tracks and formats, in order (keep one by passing its id) |
manage_call_for_speakers | Change what speakers see, close the call, or open it. Opening waits for your OK |
get_call_questions / manage_call_questions | The questions on the call; add, create, remove, require or reorder them |
list_submissions | Submissions with speakers, decision, time, room, track and the team’s picks |
get_team_picks / set_my_pick | Each teammate’s Yes, Maybe or No; your own pick |
decide_submission | Accept, waitlist, decline or undecide. Emails no one |
manage_program_session | Add 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_speakers | Everyone on an accepted session |
get_event_agenda | The agenda, its conflicts, and the rooms, tracks, formats and sponsors to choose from |
manage_event_sponsors | Add or remove a sponsor to tag sessions with |
preview_event_import / import_event_program / import_event_speakers / import_event_sponsors | Preview and import rows of sessions, speakers or sponsors |
publish_event_agenda | Publish the agenda and speaker wall to your website (embed snippets). Waits for your OK |
get_decision_emails / preview_decision_email / update_decision_email | The declined and waitlisted emails: read, preview as a speaker gets it, edit |
send_decision_emails | Email declined or waitlisted speakers. Waits for your OK |
get_speaker_emails | The speaker emails plan for accepted speakers: tasks, due date, reminders, each speaker’s progress |
update_speaker_emails_plan / pause_speaker_emails | Change the plan; pause or resume every email at once |
approve_speaker_emails | Approve the plan so the invites and reminders go. Waits for your OK |
list_event_connections / link_event_connection / preview_event_push | The 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_history | Push sessions, speakers and the agenda one way. Waits for your OK |
get_sessions_marketing / list_session_media / transcribe_session_media | Speakers’ 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”
Tasks (2 tools)
Section titled “Tasks (2 tools)”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.
| Tool | Actions | Scope | Description |
|---|---|---|---|
list_tasks | — | read:tasks | List 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_task | create, update, complete, reopen, delete | write:tasks | Create 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”.
Sessionboard CRM
Section titled “Sessionboard CRM”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.
| Tool | Scope | Description |
|---|---|---|
get_crm_home | read:crm | Counts by tag, active contacts against the plan’s limit, setup steps, newest people |
find_crm_people, get_crm_person, find_warm_opportunities | read:crm | Everyone the organization knows, one row per email, with tags, companies, pipeline stage and signals |
manage_crm_person, tag_crm_people, delete_crm_people | write:crm | Add 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_companies | read:crm / write:crm | Groups and the people in them |
import_crm_people | write:crm | Preview, 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_sync | read:crm / write:crm | What 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_contacts | read:crm / write:crm | The Contact record behind a speaker or a company’s person |
list_crm_tags, manage_crm_tag, tag_crm_contacts | read:crm / write:crm | Your own tags: list, create, rename, delete, and add or remove them on up to 500 Contacts |
add_crm_note | write:crm | A 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_entry | read:crm / write:crm | Stages 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_contract | read:crm / write:crm | Templates and starters, contracts and signers; sending, resending and voiding only after you say yes |
export_crm_contacts, export_crm_list | read:crm | Contacts, People, Groups, the pipeline or contracts as CSV with the list’s own filters (first 1,000 rows) |
hand_off_crm_people | write:crm | Hand 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_writeback | read:crm / write:crm | An 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”.
Asking about an event
Section titled “Asking about an event”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.
| Input | Required | Description |
|---|---|---|
event_id | Yes | The event to ask about |
question | Yes | The question, in plain language (up to 500 characters) |
conversation_id | No | The conversation_id from a previous answer, to ask a follow-up in the same thread |
lang | No | Answer 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_sbqlandquery_dataare 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.
Parameter Conventions
Section titled “Parameter Conventions”- Event scoping — All event-scoped tools require
event_id(snake_case string). - Action selection — Consolidated tools use
actionto 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). Returns409 Conflictif the entity was modified since.
Result Size Safety
Section titled “Result Size Safety”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 ahintwith guidance on pagination. - Query results — Capped at 100 rows with truncation metadata.
- SbQL queries —
execute_sbqlandquery_datadefault to a 50-row limit. Use thelimitparameter for more.
Resources
Section titled “Resources”The MCP server also exposes two MCP resources that AI clients can load into context:
| URI | Description |
|---|---|
sbql://schema | The SbQL schema — entities, fields, relationships, and format functions |
sbql://events | List of events in the organization with metadata |
Prompt Templates
Section titled “Prompt Templates”Pre-built templates that structure the AI’s approach to common report types:
| Prompt | Description |
|---|---|
speaker_roster | Generate a speaker roster with contact info and session assignments |
session_schedule | Generate a day-by-day session schedule grid |
evaluation_summary | Generate an evaluation/review score analysis |
task_status | Show outstanding tasks across speakers and exhibitors |
Actions that wait for your OK
Section titled “Actions that wait for your OK”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_approvalslists 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 callsGET /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.
Edits you can see and undo
Section titled “Edits you can see and undo”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.
Marketing in the conversation
Section titled “Marketing in the conversation”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.
| Tool | What you see |
|---|---|
get_marketing_home | Marketing’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_turnout | A 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_sponsors | Results: totals, funnel, channels, people sharing, posts, and a sponsor picker that opens one sponsor’s counts-only report. |
get_ai_discovery | Found 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_results | Your events and webinars, then an in-person event’s guest list and its results. |
list_approvals | What 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.
Security
Section titled “Security”- Org isolation — The SbQL compiler injects
org_idinto 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_eventthe question text is redacted from the log.
Example Conversations
Section titled “Example Conversations”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.”
