[Go to site: main page, start]

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 or Chat 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 read_event_details 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)
  • read_event_details: turn pasted event text into a UEF draft plus missing fields (analyze only; always listed; AI call fails clearly when gateway is unavailable)
  • get_import_format: versioned UEF JSON Schema textbook (schema_version 2.0, minimal + festival examples, docs URL; no AI)
  • check_import_file: 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 — the call returns confirmation_email_sent and emails a confirmation link to the contact address; nothing is sent until that person opens the email and clicks Confirm. The agent receives no token or link
  • request_sponsorship: sponsorship intake — confirmed by email the same way as booking
  • send_feedback: send an idea, problem, question, or praise to the Soundcheck team (creates a Linear issue; email fallback; optional reply email, rate-limited per IP)
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). Public quotes are illustrative/SYNTHETIC, not binding. Intake tools are consequential: they create real leads only after browser confirmation. 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.

Toolsets

By default the member server lists its full tool catalog. To scope a connection to just the tools you need, pass a comma-separated toolsets query parameter on the connection URL (for example https://mcp.soundchecklive.io/mcp?toolsets=events,staffing) or an x-mcp-toolsets header with the same value. A small core set (your agenda, attention items, notifications, org lookup, docs search, the knowledge base, and the agent playbook) is always included regardless of what you pass. Omit the parameter, or pass all, to get everything. Toolsets only apply to the member server; the public tier’s tool list doesn’t change.

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_org_integrations (what your organization connected and what each one can read) and read_integration_data (open QuickBooks invoices and bills, HubSpot contacts and deals, Flex inventory and quotes, files in Google Drive or Dropbox, messages in a gig’s Slack channel). Read-only, for org admins and owners. Reading Slack messages needs a Slack reconnect if your workspace was connected before this was added.
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_deleted_events (recently deleted gigs you can still restore), get_event_cancellation_impact (who and what a cancellation would affect).
get_event_run_of_show, get_crew_requirements, list_outside_gear, list_event_links, list_show_contacts, get_event_labor_call, list_venue_stages, list_music_requests.
get_event_travel (a gig’s flights, hotel stays, and passengers or guests), search_hotels.
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 every organization on Soundcheck), 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, check_inventory_availability (capacity, booked, available and shortage per item over civil days or a gig’s dates; location_id narrows to one location; omit item_ids for every item, an empty list checks none).
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, covering 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; on a draft gig every invitation is held until the gig is published, whatever send_invitation says), send_event_invitations (gated; sends unsent invitations on an active gig. On a draft gig nothing is sent: they wait for publish, which MCP can’t do, so publish in the Soundcheck app on web or mobile), 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; pass reask_dates with recipient_ids to ask someone who declined again for one day or several).
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 (creates an active gig that crew can see unless you pass draft: true, which creates a draft like the Soundcheck apps do: hidden from crew, with invitations held until it is published in the app, which MCP can’t do; 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; end_date as YYYY-MM-DD, after event_date, makes a multi-day gig, which carries dates only, so start_time/end_time are refused with it), update_event (partial merge: an omitted field is unchanged; end_date: null makes the gig single-day; start_time: null / end_time: null clear call times; setting times on a multi-day gig is refused, and extending a timed single-day gig with end_date clears its times, copying them onto inheriting shift days and into an empty run of show; a blank string is rejected; gated only when it sets or clears event_date, end_date, start_time or end_time, or sets a non-empty location, because those send invited crew a schedule-change notification; title, notes and other metadata edits are not gated), duplicate_event (copies venue_id and adds you as a member; the copy is active unless you pass target_state: "DRAFT", a template source always becomes a draft, and copied invitations are unsent), 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.
update_event_run_of_show (gated), create_event_schedule_items, upsert_event_schedule (gated; replaces the schedule), set_crew_requirements, add_outside_gear, add_event_link / update_event_link / remove_event_link, add_show_contact / update_show_contact / remove_show_contact, update_event_labor_call, set_event_stages, unlink_event_venue, cancel_event (gated), delete_event (gated), restore_event (gated), save_event_as_template.
add_flight_passenger, update_flight_passenger, remove_flight_passenger (gated), add_hotel_guest, update_hotel_guest, remove_hotel_guest (gated), create_hotel.
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; INCOME and EXPENSE lines are created PAID because they record money already received or spent, while RECEIVABLE and PAYABLE lines start UNPAID; no money moves), update_ledger_item (UNPAID lines only), void_ledger_item (gated; UNPAID lines only; 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_import_file (dry run), import_file (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. set_org_tour_term (gated; owner/admin): set what your organization calls a tour (Season, Residency, Run). Without one, the word follows your business type: Tour for bands and DJs, Series for venues, Project for everyone else. get_organization returns it as tour_term.
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):

MCP Apps

In a client that supports the MCP Apps protocol, some tool calls open an interactive widget alongside the usual response instead of plain text:
  • Confirm card: shown for any confirmation-gated tool call. It lays out what the action will do, with Approve and Reject in place of typing a reply.
  • Plan review: opens on get_event_plan / review_event_plan. Shows a plan’s readiness and open questions, and lets you answer or dismiss them and mark it reviewed.
  • Staffing draft: opens on review_staffing_draft, get_crew_offer, and create_crew_offer. Shows the shift roster by position with recipient counts, with an action to send it.
Support depends on your client implementing the current MCP Apps protocol revision. A client that doesn’t falls back to the plain tool response.

In-browser context (WebMCP)

The web app also exposes a small WebMCP tool, get_current_context, directly on the page for a compatible browser AI extension. It reports which gig, plan, customer, venue, or other record you’re currently looking at so a WebMCP-aware assistant can pair it with the member MCP tools above to act on the record you’re viewing. It’s read-only and doesn’t expose data on its own.

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_file 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 (use summary.broadcast_total as the expected count, since declined and standby members are not reminded), 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 its UEF document on the destination org you manage with preview_import_file, then commits with import_file (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 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. Gated tools, by area:
    • Messaging: send_message, broadcast_event_reminder, remind_invitation, remind_crew_offer, remind_availability_request, reply_to_mailbox_thread
    • Invitations, shifts & staffing: create_event_invitations, send_event_invitations, send_crew_offer, delete_crew_offer, remove_crew_offer_recipient, add_event_member, remove_event_member, apply_calllist_to_event
    • Availability: create_availability_request, send_availability_request, delete_availability, delete_availability_request
    • Gig details & travel: update_event_run_of_show, upsert_event_schedule, remove_flight_passenger, remove_hotel_guest
    • Event lifecycle & closeout: restore_event, archive_event, unarchive_event, cancel_event, delete_event, complete_event, settle_event, reopen_event, create_draft_event_from_plan
    • Finances: void_ledger_item, delete_ledger_item, record_ledger_payment, reverse_ledger_payment
    • Setlists & call lists: delete_setlist, delete_song, delete_calllist
    • CRM: delete_venue, delete_customer, delete_sponsor, delete_lead, convert_lead, delete_inventory, delete_offering, delete_offering_template
    • Import & ingestion: commit_import, import_file, commit_ingestion_file, commit_ingestion_batch
    • Org, teams & checklists: invite_org_member, remove_org_member, delete_org_position, set_org_playbook, set_org_timezone, set_org_tour_term, delete_checklist_template, delete_form
  • 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, the web app’s chat dock, email, and SMS.

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.