Skip to main content
The Soundcheck MCP server lets an AI assistant (Claude Desktop, Claude Code, Cursor, or any client that speaks the Model Context Protocol) read your events, crew, availability, setlists, finances, and CRM. It can run everyday live-event work in plain language: staffing the engagement loop, building and duplicating gigs, closing out and settling shows, managing venues and customers, migrating a company’s data into Soundcheck, ingesting gig files, and messaging your crew. The MCP integration is separate from CheckAI Private Preview. Connecting an external assistant does not grant CheckAI, Chat, or E-sign beta access; those previews are available only to existing beta testers. Signup, paid plans, upgrades, support requests, and public demos do not grant preview access. Hosted MCP is live on mcp.soundchecklive.io: anonymous public discovery at /public/mcp, and member tools at /mcp with OAuth via Clerk Protected Resource Metadata. The member tier authenticates with your own Clerk account. The assistant uses the signed-in account’s permissions. It can perform admin operations only when that account is authorized for them.
Prefer mcp.soundchecklive.io as the customer connect host. Public (anonymous): https://mcp.soundchecklive.io/public/mcp. Member (OAuth): https://mcp.soundchecklive.io/mcp. Member MCP returns 401 without a token; Protected Resource Metadata lists https://clerk.soundchecklive.io as the authorization server. qa-mcp and dev-mcp serve the same endpoints for the QA and dev environments (each against its own Clerk instance). Official MCP Registry listings: public io.soundchecklive/live-event-quotes 0.1.0 and member io.soundchecklive/soundcheck 0.1.1-ts. There is no Cursor Marketplace plugin yet.
The member server exposes your reads plus a curated set of write actions. The most consequential ones (messaging real people, broadcasting reminders, committing an import or ingestion, settling a show, deleting a venue, customer, song, or setlist) are gated: when the confirmation gate is enabled they do nothing on the first call and instead ask you to confirm. The server never changes billing or impersonates other users. Member MCP is draft-oriented and confirmation-gated, and it uses the same UEF catalog shape as the app.

What you can do with it

Get briefed

“What needs my attention this week?” pulls your upcoming shows and everything waiting on you into one answer. Ask for a one-page pre-show brief: lineup, schedule, setlist, open checklist items.

Run the engagement loop

Ask the crew’s availability, then clear the offers and invitations sitting in your inbox (accept, decline, respond) without leaving chat.

Build & manage gigs

Create or duplicate an event, attach a venue, add members, draft and apply a call list, and build setlists, all described in a sentence.

Close out & settle

Check whether a show is ready to settle, read its ledger, explicitly mark it complete after its effective end, and settle the books. See How a gig completes for permissions and the current web limitation.

Migrate & ingest data

Point the assistant at a client’s existing roster, venues, or customers and walk a guided import, or drop gig files onto an event and review proposals when analysis produced them before anything is written.

Reach your crew

Preview who a message will reach, then send a custom SMS or email, or the standard reminder to a whole roster, with an explicit confirm-before-send step.
Client capabilities differ. Use the setup guide for your external assistant and check the tools available after connecting. See CheckAI for its separate Private Preview surfaces.

Connect from your assistant

Choose your client below. Hosted MCP is live on mcp.soundchecklive.io. Claude’s Connectors Directory and the ChatGPT plugin are submitted for review, not listed yet; use the custom URL recipes on those pages today. There is no Cursor Marketplace plugin yet.

Claude

Claude.ai / Desktop: directory when listed; custom connector today.

ChatGPT

OpenAI directory when listed; custom MCP URL today.

Cursor

Tools & MCP / mcp.json with the live member or public URL.

Claude Code

One-line claude mcp add --transport http ….

Public discovery

Anonymous Streamable HTTP public tier at https://mcp.soundchecklive.io/public/mcp (soundcheck-public 0.1.0-ts). The primary public capability is instant event quoting: give quote_event a loose event description and get back a structured estimate range with a category breakdown, assumptions, confidence, missing information, pricing evidence, and a quote_id for refinement. Numbers come from Soundcheck’s versioned public pricing catalog and a deterministic engine, never from a model. Public quotes are synthetic / illustrative (labeled synthetic: true on every payload), not real costs and not a binding offer. Public capability highlights (see the generated catalog for exact source counts):
  • quote_event: event description (plus optional date, location, structured requirements) → grounded synthetic estimate range, breakdown, assumptions, confidence, missing_information, evidence, and a stateless quote_id; pass quote_id plus overrides to refine. Optional use_ai_grounding uses the same analysis service as analyze_event_to_uef to fill gaps in the extracted event facts only (prices are never model-generated).
  • list_quote_packages: browse the pricing catalog behind quote_event (event profiles, package tiers, add-ons, market indexes, rules, catalog version) — the evidence a quote cites
  • get_public_org: org lookup on the public storefront
  • list_positions: global default position catalog (not the looked-up org’s roles; no org id)
  • normalize_positions: map free-text crew role strings onto the global position catalog (deterministic; not AI-gated)
  • analyze_event_to_uef: turn pasted event text into a UEF draft plus missing fields (analyze only; always listed; AI call fails clearly when gateway is unavailable)
  • get_uef_schema: versioned UEF JSON Schema textbook (schema_version 1.0, minimal + festival examples, docs URL; no AI)
  • validate_uef: validate a UEF draft locally (valid / errors / missing_required; no AI, no invented fixes; 256 KiB string cap)
  • search_places / get_place: seeded public industry venue + hotel catalog (not a complete world database; unknown names return empty/suggestions, never invented addresses)
  • search_inventory / normalize_inventory: public live-event gear taxonomy (stable ids + aliases; not org stock)
  • lookup_market_pricing: market price ranges per service category with the evidence behind them (published rates plus Soundcheck actuals released only as ≥3-organization aggregates; returns coverage: "none" and no numbers when evidence is missing — no price is ever invented)
  • request_booking: booking intake (creates a lead)
  • request_sponsorship: sponsorship intake (creates a lead)
Prompts: quote_an_event, how_to_staff_a_live_event, plan_event_crew. There is no public gig search yet (blocked on a public-safe storefront projection). Intake tools are consequential: they create real leads. Do not spam request_booking or request_sponsorship.

Hosting status

Canonical docs for operators and agents: https://docs.soundchecklive.io/integrations/mcp-server. Prefer mcp.soundchecklive.io over api.soundchecklive.io for customer connect recipes. Spec-compliant clients use OAuth 2.0 Protected Resource Metadata (RFC 9728) against Clerk at https://clerk.soundchecklive.io. You will not paste API keys. Do not invent alternate hosts. There is no Cursor Marketplace plugin yet.

Connect your client

Paste the real mcp.soundchecklive.io URLs below. Public needs no sign-in. Member needs OAuth (expect 401 until your client completes the browser sign-in).

Public (anonymous)

Or add by hand to ~/.claude.json (or a per-project .mcp.json):
Restart Claude Code. Verify with /mcp: sc-public should show as connected. No sign-in step.

Member (signed-in, OAuth)

Member MCP returns 401 without auth. Spec-compliant clients follow RFC 9728 Protected Resource Metadata:
  • OAuth via RFC 9728 Protected Resource Metadata
  • Clerk authorization server: https://clerk.soundchecklive.io
  • Authorization code + PKCE
  • No pasted session JWT for first-run connect
  • Do not invent a static client_id. Clerk may advertise Dynamic Client Registration metadata; do not assume naive clients can complete DCR for member connect today.
Prefer https://mcp.soundchecklive.io/mcp over any api.soundchecklive.io MCP path as the customer recipe.
On first tool use the client should follow the 401 + PRM challenge and open a browser sign-in. Verify with /mcp: sc should show as connected.

How sign-in works

Public tier: no sign-in. Connect and call tools at https://mcp.soundchecklive.io/public/mcp. Member tier: the first time your client calls a member tool it will:
  1. Hit https://mcp.soundchecklive.io/mcp and receive a 401 with a WWW-Authenticate challenge that includes resource_metadata (RFC 9728) and Clerk’s as_uri.
  2. Fetch /.well-known/oauth-protected-resource and read authorization_servers (lists https://clerk.soundchecklive.io).
  3. Complete the OAuth browser sign-in your client supports. Do not paste a static client_id. Do not assume Dynamic Client Registration works for every naive client.
  4. Cache the access token for later calls.
You act as whatever your account can see. If you belong to multiple organizations, the tools operate in your active organization. Switch it in the web app if you need a different one.
Multi-org OAuth caveat: when your Clerk account has more than one membership, some first-connect flows leave orgId empty. Pass organization_id on tools that accept it, or use a single-membership account for the first connect until that path is tightened.
Do not use a manually pasted Clerk session JWT (Bearer … from the browser console) as the documented first-run path. Spec-compliant clients should follow OAuth via PRM.

What the assistant can do

The generated MCP capability catalog lists the registered tools, resource URIs, prompts, and read/write counts for the source release. A connected deployment or cached connector can differ: list capabilities after connecting and check the build revision returned by initialize. Read tools are annotated read-only; consequential writes require explicit approval when the confirmation gate is enabled.

Member prompts

These are MCP prompts on the signed-in server (separate from the public three: quote_an_event, how_to_staff_a_live_event, plan_event_crew). Clients that support prompts can list them after connecting to https://mcp.soundchecklive.io/mcp. Consequential flows (text_my_crew, import/ingest commits, invites) still hit the confirmation gate on the underlying tools.

Available tools

Read tools

get_org_attention (upcoming shows + everything waiting on you), get_org_brief (a context primer on your organization), my_agenda, my_pending_actions.
list_events, get_event, get_event_audit_logs, get_event_schedule, get_event_checklist, list_event_members (the crew working the show), list_event_assignees (the org members assigned to manage it).
list_event_chats (membership-scoped; SMS phone numbers are redacted for non-managers), list_event_chat_messages, get_event_chat_message (stored citation records with immutable created_provider_timestamp; members and gig managers only).
list_setlists, list_songs (org song library; use after delete_song to verify removal), get_setlist, get_setlists_by_event, list_calllists, get_calllist.
get_event_ledger (payables, receivables, income, expenses), get_event_settlement_status (is a show ready to settle), list_ledger_accounts (income/expense accounts a ledger line posts to).
get_user_availability, get_availability_request, list_availability_requests, list_crew_offers (offers sent to you), list_org_crew_offers (every shift on the org’s Staffing boards, DRAFT included; filter by status, type, event_id, from/to), get_crew_offer (one shift with its days and per-recipient status), review_staffing_draft (one gig’s shifts grouped by position, with names, call times, fees, seat counts, and which shifts still have people nobody has been sent anything).
get_me, list_users, list_org_members (roles and positions), list_organizations (membership-scoped: only orgs you belong to, not tenant-wide), get_organization, list_org_positions (defaults to active roles; each row includes is_active), list_default_positions (Soundcheck’s built-in role catalog, to enable with create_org_position).
list_venues (defaults to org-saved venues only after delete_venue unlink; pass saved_only=false for the shared global directory; search matches name; limit/offset page), get_venue, list_customers (same search + pagination), get_customer, list_sponsors, list_leads (filter by status, stage, owner_org_member_id, or search on name/email/company/location), get_lead (pass organization_id for a lead in a non-active org), get_lead_activity, list_inventory (search matches name/category/location), get_inventory.
get_org_playbook: read the free-text rules and preferences that steer the assistant for your organization.
get_org_agent_profile: load the curated knowledge base for your organization — how the business works, organized into sections (overview, services, service area, clients, venues, staffing, operations, money rules, incidents, voice, playbook, glossary), plus the saved playbook. Call it once at the start of a session. search_org_knowledge: ask a plain-language question (“load-in problems at The Fillmore”) and get learnings and incidents, each citing the record it came from. get_org_knowledge_page: read the written knowledge-base pages your team sees under Settings → Knowledge base, including sections your team edited. Both are read-only and limited to managers and admins. The knowledge base is guidance — dates, crew, and money always come from the event, staffing, and ledger tools. Organizations opt in; until then both tools report not_enabled.
list_mailbox (invitation / crew-offer / availability threads), get_mailbox_check (new-thread count), list_event_invitations (invitation row ids for a mailbox invitation thread), get_invitation.
preview_event_recipients, list_notifications, list_imports, get_import, get_import_field_catalog, export_workspace.
list_ingestion_batches, get_ingestion_batch, get_ingestion_file_review (proposals + dry-run preview), get_ingestion_batch_review (merged proposals + warnings), request_attachment_upload (asks the host app to upload staged files).

Write & action tools

Respond as crew: accept_invitation, decline_invitation, accept_crew_offer, decline_crew_offer.Staff as an operator: create_event_invitations (gated; invite org members by user_id or outsiders by email/phone to one gig, with org_position_id, call_order, and performance_fee; send_invitation: false stores drafts), send_event_invitations (gated; sends the drafts), create_crew_offer (a DRAFT shift on the Staffing board — nobody is notified), update_crew_offer (edit a shift; per-day day_fees / day_seats / day_times), send_crew_offer (gated; opens the shift and notifies its recipients).
set_availability (date args use YYYY-MM-DD; type is AVAILABLE or UNAVAILABLE, case-insensitive), create_availability_request, send_availability_request, respond_to_availability_request.
create_event (adds the authenticated user as a member by default; pass member_ids to override; name is stored and returned as both name and title; start_time/end_time/event_date accept RFC3339 or unix epoch seconds as number or numeric string; omit timezone and the IANA zone is inferred from an RFC3339 start_time UTC offset such as -05:00 — unix seconds carry no offset, so pass timezone with them), update_event (partial merge), duplicate_event (copies venue_id and adds you as a member), archive_event (gated), unarchive_event (gated), add_event_member (gated; pass org_position_id from list_org_positions to staff a named role — each person joins the roster as INVITED and is added to the gig’s calendar invite), remove_event_member (gated; clears their pending invitations and calendar seat — payables and accepted offers are left for you to reconcile), link_venue_to_event, update_checklist_task (requires checklist_version from get_event_checklist), set_event_assignee (scoped manage rights on one gig; replaces the whole role set), remove_event_assignee.
complete_event (mark a show complete, gated), settle_event (close the books, gated), reopen_event (undo a premature closeout, gated).
create_ledger_item (ledger_type INCOME, RECEIVABLE, EXPENSE, or PAYABLE; the account is resolved from list_ledger_accounts when the org has one of the matching type; no money moves), update_ledger_item (UNPAID lines only), void_ledger_item (gated; the line stops counting toward totals and settlement), record_ledger_payment (gated; records a cash, check, Zelle, Venmo, PayPal, wire, or other payment made outside Soundcheck, in full or in part, with an optional paid_on day; no money moves), reverse_ledger_payment (gated; undoes the latest manual payment on a line).
create_setlist, create_song, update_setlist, delete_setlist (gated), delete_song (gated), create_calllist, update_calllist, apply_calllist_to_event (gated; all members: primaries insert INVITED, backups with is_backup or call_order !== 0 insert STANDBY; re-apply adds 0 new rows).
create_venue, update_venue (shared record fields; "" clears text, null clears capacity/dressing_rooms/green_room; coordinates are set-only), update_venue_org_details (your org’s private org_notes / org_status / org_metadata / access_code), create_customer, update_customer, create_sponsor, update_sponsor, create_lead (source is required — WEBSITE, REFERRAL, INBOUND_EMAIL, PARTNER, REPEAT_CLIENT, or OTHER), update_lead (event_id / customer_id accept null to unlink), claim_lead, mark_lead_lost, reopen_lead, convert_lead (gated; marks Won and creates a customer on an event), delete_lead (gated), create_inventory, update_inventory, assign_inventory, return_inventory, delete_inventory (gated), delete_venue (gated; unlinks the org overlay — default list_venues no longer returns it), delete_customer (gated).
create_import_from_paste (targets: EVENT, LEAD, INVENTORY, MEMBER), map_import, preview_import (dry run), commit_import (gated), preview_uef_import (dry run), import_uef (gated workspace clone).
create_ingestion_batch, add_ingestion_text, upload_ingestion_file (binary base64 for third-party MCP agents; batch/text paths also accept files), trigger_ingestion_merge, dismiss_ingestion_merge, retry_ingestion_file, dismiss_ingestion_file, commit_ingestion_file (gated), commit_ingestion_batch (gated). Analysis may not produce proposals; files can land attached-only when analysis never runs. Review what you have with the read tools, then commit what you choose.
set_org_timezone (gated; owner/admin): set the org IANA timezone so new events are not stuck on UTC. set_org_playbook (gated; owner/admin): rewrite the rules that steer the assistant for your organization.
mark_mailbox_checked (clears the new-thread badge), remind_invitation, remind_crew_offer, remind_availability_request (gated; they message pending people), reply_to_mailbox_thread (gated; write your own SMS or email to the pending, responded, or all people on an INVITATION, CREW_OFFER, or AVAILABILITY_REQUEST thread).
invite_org_member (gated; Clerk emails the invitee). Default role is member; inviting an admin is owner-only. create_org_position (enable a catalog role by default_position_id or add a custom_name role) and update_org_position (rename, reorder, re-rate, or is_active: false to deactivate) keep the roster staffable.
send_message, broadcast_event_reminder: both gated; they preview and require an explicit confirmation before sending.

Resources

Browse and attach platform data as context using @ (in Claude Code) or + (in Cursor):

What MCP cannot do yet

  • Paying a ledger line or funding a payout: create_ledger_item / update_ledger_item / void_ledger_item keep the books and record_ledger_payment / reverse_ledger_payment record payments made outside Soundcheck, but paying an individual line through Soundcheck (Cleo / card) stays in the GUI; settle_event (gated) closes the show.
  • Seat and billing changes: MCP cannot change subscriptions or billing. Member-management actions remain subject to the signed-in account’s role; check the connected server’s tools before using them.
  • Public MCP workspace clone: no export_workspace or import_uef on the public endpoint. Member MCP can clone; full rosters stay off public MCP. See Export a workspace.

Worked examples

Everything below is one message you can send your assistant. It picks the right tools; you approve anything consequential.
Runs get_org_attention to pull your upcoming shows plus every invitation, crew offer, and availability request waiting on you, and summarizes them. Follow up with “clear the ones I can” and it walks the accepts/declines with you.
Finds the event (list_events → get_event), then pulls the schedule, roster, setlist, and open checklist items (get_event_schedule, list_event_members, get_setlists_by_event, get_event_checklist) into a single pre-show sheet.
Calls get_event_settlement_status to check outstanding items and get_event_ledger to lay out payables and receivables. If it’s ready, “settle it” runs settle_event, a gated action, so you confirm before the books close.
Drafts an availability request scoped to your drum positions (create_availability_request) and sends it to the crew (send_availability_request). Responses land in each member’s Mailbox and flow back into the calendar.
Uses duplicate_event to clone the positions and structure, update_event to set the new date, and link_venue_to_event (looking the venue up or creating it with get_venue / create_venue).
Reads my_pending_actions / list_crew_offers, then runs accept_invitation / accept_crew_offer on the ones you name. Nothing is accepted without you saying so.
Reviews extracted proposals with get_ingestion_batch_review when analysis produced them, shows you the schedule, crew, and money it found, and commits only what you approve with commit_ingestion_batch (a gated action). See AI file ingestion.
Lists inbound leads with list_leads (filter stage / status), reads one with get_lead, claims it with claim_lead, then converts with convert_lead (gated) onto the booked event. That creates the customer and marks the lead Won.
Finds the mics with list_inventory (search), then assign_inventory with event_id and quantity. return_inventory checks them back in after the show.
Drives create_import_from_paste → map_import → preview_import (a dry run you inspect) → commit_import (gated), so you see exactly what will land before anything is written.
Previews recipients with preview_event_recipients, then sends via broadcast_event_reminder or a custom send_message. Both are gated, so it shows you the message and the list and waits for your yes.
Reads the current rules with get_org_playbook and updates them with set_org_playbook (gated, owner/admin) so future runs of the assistant follow your organization’s conventions.
Exports the source workspace with export_workspace, dry-runs the UEF bundle on the destination org you manage with preview_uef_import, then commits with import_uef (gated). Money, files, branding, and integration tokens stay out. See Export a workspace.
Checks the roster with list_org_positions (creating a missing role with create_org_position), lays down DRAFT shifts with apply_calllist_to_event or create_crew_offer, shows you the roster with review_staffing_draft / get_crew_offer, then send_crew_offer (gated) opens each shift and notifies the crew only after you approve. A 0-shift apply comes back with a hint naming the cause instead of a silent no-op.
create_ledger_item (RECEIVABLE; the income account resolves from list_ledger_accounts), then void_ledger_item (gated) on the duplicate. Both show on get_event_ledger; nothing is paid until you settle.
Lists the roster with list_org_members, confirms the email and role, then sends invite_org_member (gated) so Clerk emails them. Inviting an admin stays owner-only.

Security model

  • Each member request carries your Soundcheck (Clerk) token. The server validates it on every call and forwards the validated token to the Soundcheck API.
  • The server has no privileged credentials beyond your own account. It acts as you, never as an admin, and can’t reach data your login can’t.
  • Mutations are flagged with MCP annotations (readOnlyHint, destructiveHint, idempotentHint) so clients can prompt for confirmation.
  • Confirmation gate. Consequential tools (send_message, broadcast_event_reminder, remind_invitation, remind_crew_offer, remind_availability_request, invite_org_member, commit_import, import_uef, commit_ingestion_file, commit_ingestion_batch, complete_event, settle_event, reopen_event, archive_event, unarchive_event, set_org_playbook, set_org_timezone, delete_venue, delete_customer, delete_song, delete_setlist, delete_lead, delete_inventory, convert_lead, create_event_invitations, send_event_invitations, send_crew_offer, remove_event_member, void_ledger_item, record_ledger_payment, reverse_ledger_payment, and reply_to_mailbox_thread) go further: when the gate is enabled they perform nothing on first call and return {status:"confirmation_required", confirmation_token, summary, expires_in_seconds}. The action runs only when the same call is repeated with that token, so a single stray tool call can never message your crew, commit a write, archive a gig, or settle a show. For ingestion commits the token also binds the exact proposals you reviewed, so a re-merge automatically re-gates the commit. Soundcheck’s own assistant turns this into a plain “reply YES to send” step, and only the original requester can approve.
  • TLS is required (HTTPS only). Production ingress redirects HTTP to HTTPS. There is no HSTS claim in this surface.

Troubleshooting

Re-run the sign-in by removing and re-adding the server config, or in Claude Code run /mcp and re-authenticate. Confirm the URL is https://mcp.soundchecklive.io/mcp (member) or https://mcp.soundchecklive.io/public/mcp (public).
On member MCP, 401 without a completed OAuth flow is expected. Complete the browser sign-in your client opens after the PRM challenge. Public tier at https://mcp.soundchecklive.io/public/mcp should not 401.
Tool responses surface the underlying API status code and body. Common causes: you’re not a member of the organization that owns the resource, or the id is stale. Check that your active organization is the one you expect.
That’s the gate working. Re-issue the exact same call including the confirmation_token it returned. Tokens are single-use and expire after a few minutes.

For agents

Canonical links for agent indexes (llms.txt and similar): Prefer the Mintlify MCP docs path above over any marketing SPA path under /docs/mcp. The in-app Help widget does not surface an MCP connect URL. There is no Cursor Marketplace plugin yet.

CheckAI assistant

The same tools, in Slack, SMS, and in-app chat.

AI file ingestion

Drop gig files onto an event and review proposals when analysis runs.

Claude

Claude.ai / Desktop connect guide.

ChatGPT

ChatGPT / Codex connect guide.

Cursor

Cursor Tools & MCP setup.

Claude Code

Claude Code CLI setup.

Agent discovery

How the server is published so agents can find it.

Integrations overview

Everything Soundcheck connects to.

Privacy policy

How account and product data are handled.