> ## Documentation Index
> Fetch the complete documentation index at: https://docs.soundchecklive.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect your AI to Soundcheck (MCP)

> Point Claude, Cursor, or any MCP client at your Soundcheck data — read your gigs, crew, and finances and run everyday live-event work in plain language.

The Soundcheck **MCP server** lets an AI assistant — **Claude Desktop**, **Claude Code**, **Cursor**, or any client that speaks the [Model Context Protocol](https://modelcontextprotocol.io) — read your events, crew, availability, setlists, finances, and CRM and run the everyday work of putting on live events 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](/features/ai/file-ingestion), and messaging your crew.

It's a hosted service. Each request is authenticated with **your own Soundcheck account** (via Clerk), and the assistant acts strictly as you — it sees only what your login can see, never as an admin, and never on behalf of anyone else. It's the same server that powers [CheckAI](/features/ai/overview), Soundcheck's own assistant.

<Info>
  The 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 — are gated: when the confirmation gate is enabled they do **nothing** on the first call and instead ask you to confirm. The server never deletes data, changes billing, or impersonates other users.
</Info>

## What you can do with it

<CardGroup cols={2}>
  <Card title="Get briefed" icon="message">
    "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.
  </Card>

  <Card title="Run the engagement loop" icon="handshake">
    Ask the crew's availability, then clear the offers and invitations sitting in your inbox — accept, decline, respond — without leaving chat.
  </Card>

  <Card title="Build & manage gigs" icon="calendar-plus">
    Create or duplicate an event, attach a venue, add members, draft and apply a call list, and build setlists — described in a sentence.
  </Card>

  <Card title="Close out & settle" icon="circle-check">
    Check whether a show is ready to settle, read its ledger, mark it complete, and settle the books — the same post-event flow you'd run on the web.
  </Card>

  <Card title="Migrate & ingest data" icon="file-import">
    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 what CheckAI extracts before anything is written.
  </Card>

  <Card title="Reach your crew" icon="paper-plane">
    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.
  </Card>
</CardGroup>

Because it all runs through one MCP, the same capabilities work from Claude Desktop, Claude Code, Cursor, or Soundcheck's own assistant on **Slack, SMS, and in-app chat** — wherever your team already works.

## Server endpoints

| Environment | URL                                     |
| ----------- | --------------------------------------- |
| Production  | `https://mcp.soundchecklive.io/mcp`     |
| QA          | `https://mcp.qa.soundchecklive.io/mcp`  |
| Dev         | `https://mcp.dev.soundchecklive.io/mcp` |

Use the **production** URL unless you've been told otherwise. All endpoints implement OAuth 2.0 Protected Resource Metadata ([RFC 9728](https://www.rfc-editor.org/rfc/rfc9728.html)), so spec-compliant clients discover the sign-in flow automatically — you don't paste API keys. There's a separate anonymous [public discovery endpoint](/integrations/mcp-discovery) at `/public/mcp` with a smaller, unauthenticated tool set; everything in this guide is the signed-in **member** tier at `/mcp`.

## Connect your client

The server is a standard **Streamable HTTP** MCP endpoint. Any compliant client connects the same way: give it the URL, and sign in through your browser when prompted. The three most common clients are below; other clients follow the same shape.

<Tabs>
  <Tab title="Claude Code">
    Add the server from the CLI:

    ```bash theme={null}
    claude mcp add --transport http soundcheck https://mcp.soundchecklive.io/mcp
    ```

    Or add it by hand to your global `~/.claude.json` (or a per-project `.mcp.json`):

    ```json theme={null}
    {
      "mcpServers": {
        "soundcheck": {
          "type": "http",
          "url": "https://mcp.soundchecklive.io/mcp"
        }
      }
    }
    ```

    Restart Claude Code. The first time you use a Soundcheck tool it opens a browser tab to sign in, then caches the token. Verify with `/mcp` — `soundcheck` should show as **connected**.
  </Tab>

  <Tab title="Claude Desktop">
    Open **Settings → Connectors → Add custom connector**, give it a name (`Soundcheck`), and paste the URL:

    ```
    https://mcp.soundchecklive.io/mcp
    ```

    Claude Desktop opens a browser window for you to sign in to Soundcheck. Once connected, Soundcheck's tools appear in the tools menu of any conversation.
  </Tab>

  <Tab title="Cursor">
    Add to `~/.cursor/mcp.json` (or a per-workspace `.cursor/mcp.json`):

    ```json theme={null}
    {
      "mcpServers": {
        "soundcheck": {
          "type": "http",
          "url": "https://mcp.soundchecklive.io/mcp"
        }
      }
    }
    ```

    Cursor uses the same browser sign-in on first connect. Check **Settings → MCP** to confirm the server is connected.
  </Tab>

  <Tab title="Any MCP client">
    Configure a **Streamable HTTP** (also called "http" or "remote") MCP server pointing at:

    ```
    https://mcp.soundchecklive.io/mcp
    ```

    On first use the client receives a `401` with a `WWW-Authenticate` challenge, reads our Protected Resource Metadata, discovers the Clerk sign-in server, and walks you through an OAuth browser sign-in. No API key to paste.
  </Tab>
</Tabs>

### How sign-in works

The first time your client calls a Soundcheck tool it will:

1. Hit `/mcp` and receive a `401` with a `WWW-Authenticate` challenge pointing at our metadata document.
2. Read the metadata and discover the Soundcheck (Clerk) sign-in server.
3. Open a browser tab so you can sign in with your normal Soundcheck credentials.
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 Soundcheck web app if you need a different one.

### Manual token mode (fallback)

If your client doesn't support automatic OAuth discovery, get a short-lived session token from a signed-in Soundcheck browser session (dev tools console → `await window.Clerk.session.getToken()`) and set it as a static header:

```json theme={null}
{
  "mcpServers": {
    "soundcheck": {
      "type": "http",
      "url": "https://mcp.soundchecklive.io/mcp",
      "headers": { "Authorization": "Bearer paste-your-token-here" }
    }
  }
}
```

<Warning>
  Session tokens expire after about an hour. When you start seeing `401` errors, refresh the token. OAuth clients refresh automatically — prefer them.
</Warning>

## What the assistant can do

The member tier exposes **82 tools** — **43 reads** and **39 write/action tools** — plus **9 resources** you can attach as context and a set of ready-made workflow prompts. Read tools are annotated read-only so clients know they're always safe to run; write tools carry annotations (and, for the consequential ones, a confirmation gate) so your client can prompt before acting.

### Read tools

<AccordionGroup>
  <Accordion title="Attention & your day" icon="list-check">
    `get_org_attention` (upcoming shows + everything waiting on you), `get_org_brief` (a context primer on your organization), `my_agenda`, `my_pending_actions`.
  </Accordion>

  <Accordion title="Events" icon="calendar">
    `list_events`, `get_event`, `get_event_audit_logs`, `get_event_schedule`, `get_event_checklist`, `list_event_members`.
  </Accordion>

  <Accordion title="Setlists & call lists" icon="music">
    `list_setlists`, `get_setlist`, `get_setlists_by_event`, `list_calllists`, `get_calllist`.
  </Accordion>

  <Accordion title="Money & closeout" icon="dollar-sign">
    `get_event_ledger` (payables, receivables, income, expenses), `get_event_settlement_status` (is a show ready to settle).
  </Accordion>

  <Accordion title="Availability & engagements" icon="handshake">
    `get_user_availability`, `get_availability_request`, `list_availability_requests`, `list_crew_offers`.
  </Accordion>

  <Accordion title="People & orgs" icon="user">
    `get_me`, `list_users`, `list_organizations`, `get_organization`, `list_org_positions`.
  </Accordion>

  <Accordion title="CRM" icon="address-book">
    `list_venues`, `get_venue`, `list_customers`, `get_customer`, `list_sponsors`, `list_inventory`.
  </Accordion>

  <Accordion title="Agent playbook" icon="book">
    `get_org_playbook` — read the free-text rules and preferences that steer the assistant for your organization.
  </Accordion>

  <Accordion title="Messaging & imports (read)" icon="inbox">
    `preview_event_recipients`, `list_notifications`, `list_imports`, `get_import`, `get_import_field_catalog`.
  </Accordion>

  <Accordion title="File ingestion (read)" icon="file-import">
    `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).
  </Accordion>
</AccordionGroup>

### Write & action tools

<AccordionGroup>
  <Accordion title="Invitations & crew offers" icon="envelope-open">
    `accept_invitation`, `decline_invitation`, `accept_crew_offer`, `decline_crew_offer`.
  </Accordion>

  <Accordion title="Availability" icon="calendar-check">
    `set_availability`, `create_availability_request`, `send_availability_request`, `respond_to_availability_request`.
  </Accordion>

  <Accordion title="Event lifecycle" icon="box-archive">
    `create_event`, `update_event` (partial merge), `duplicate_event`, `archive_event`, `unarchive_event`, `add_event_member`, `link_venue_to_event`.
  </Accordion>

  <Accordion title="Closeout & settlement" icon="circle-check">
    `complete_event` (mark a show complete), `settle_event` (close the books — gated), `reopen_event` (undo a premature closeout — gated).
  </Accordion>

  <Accordion title="Setlists & call lists" icon="list-music">
    `create_setlist`, `create_calllist`, `apply_calllist_to_event`.
  </Accordion>

  <Accordion title="CRM" icon="address-book">
    `create_venue`, `create_customer`, `create_sponsor`.
  </Accordion>

  <Accordion title="Data import" icon="file-import">
    `create_import_from_paste`, `map_import`, `preview_import` (dry run), `commit_import` (gated).
  </Accordion>

  <Accordion title="File ingestion" icon="wand-magic-sparkles">
    `create_ingestion_batch`, `add_ingestion_text`, `trigger_ingestion_merge`, `dismiss_ingestion_merge`, `retry_ingestion_file`, `dismiss_ingestion_file`, `commit_ingestion_file` (gated), `commit_ingestion_batch` (gated) — drop gig files, review extracted [proposals](/features/ai/file-ingestion), and commit what you choose.
  </Accordion>

  <Accordion title="Agent playbook" icon="book">
    `set_org_playbook` (gated; owner/admin) — rewrite the rules that steer the assistant for your organization.
  </Accordion>

  <Accordion title="Messaging" icon="paper-plane">
    `send_message`, `broadcast_event_reminder` — both gated; they preview and require an explicit confirmation before sending.
  </Accordion>
</AccordionGroup>

### Resources

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

| URI template                                   | What it returns                                                   |
| ---------------------------------------------- | ----------------------------------------------------------------- |
| `soundcheck://user/me`                         | Your authenticated user.                                          |
| `soundcheck://event/{event_id}`                | Full event details.                                               |
| `soundcheck://setlist/{setlist_id}`            | A setlist with its sets and songs.                                |
| `soundcheck://calllist/{calllist_id}`          | A call list with its positions.                                   |
| `soundcheck://organization/{organization_id}`  | Organization details.                                             |
| `soundcheck://venue/{venue_id}`                | Venue details.                                                    |
| `soundcheck://customer/{customer_id}`          | Customer details.                                                 |
| `soundcheck://import/{job_id}`                 | An import job's status, mapping, and preview.                     |
| `soundcheck://ingestion/{event_id}/{batch_id}` | An ingestion batch's per-file status, proposals, and merge state. |

## Worked examples

Everything below is one message you can send your assistant. It picks the right tools; you approve anything consequential.

<AccordionGroup>
  <Accordion title="&#x22;What needs my attention this week?&#x22;">
    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.
  </Accordion>

  <Accordion title="&#x22;Give me a one-page brief for Friday's show at the Blue Note.&#x22;">
    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.
  </Accordion>

  <Accordion title="&#x22;Is the Saturday wedding ready to settle? Show me the ledger first.&#x22;">
    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.
  </Accordion>

  <Accordion title="&#x22;Who's free the weekend of the 14th? Ask my drummers.&#x22;">
    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.
  </Accordion>

  <Accordion title="&#x22;Duplicate last month's corporate gig for June 3rd and put it at the Fairmont.&#x22;">
    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`).
  </Accordion>

  <Accordion title="&#x22;Clear my inbox — accept anything I'm confirmed for.&#x22;">
    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.
  </Accordion>

  <Accordion title="&#x22;I dropped the contract onto the June 3rd gig — pull the details in.&#x22;">
    Reviews the extracted proposals with `get_ingestion_batch_review`, 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](/features/ai/file-ingestion).
  </Accordion>

  <Accordion title="&#x22;Import this roster I'm pasting from the old system.&#x22;">
    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.
  </Accordion>

  <Accordion title="&#x22;Remind everyone booked on tonight's show about the 5pm load-in.&#x22;">
    Previews recipients with `preview_event_recipients`, then sends via `broadcast_event_reminder` or a custom `send_message` — both gated, so it shows you the message and the list and waits for your **yes**.
  </Accordion>

  <Accordion title="&#x22;Teach the assistant that we always hold two subs for tour dates.&#x22;">
    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.
  </Accordion>
</AccordionGroup>

## Security model

* Each 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.** Nine consequential tools — `send_message`, `broadcast_event_reminder`, `commit_import`, `commit_ingestion_file`, `commit_ingestion_batch`, `complete_event`, `settle_event`, `reopen_event`, and `set_org_playbook` — go further: when the gate is enabled they perform nothing on first call and return a short-lived, args-bound confirmation token. 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, 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); the hosted server enforces HSTS and HTTPS-only redirects.

## Troubleshooting

<AccordionGroup>
  <Accordion title="My client says the server is 'disconnected'">
    Re-run the sign-in by removing and re-adding the server config, or in Claude Code run `/mcp` and re-authenticate.
  </Accordion>

  <Accordion title="I'm getting 401 Unauthorized on every tool call">
    Your token expired or was rejected. For OAuth clients, sign in again. For manual token mode, paste a fresh token.
  </Accordion>

  <Accordion title="A tool returned a JSON error from the API">
    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.
  </Accordion>

  <Accordion title="A write tool keeps returning 'confirmation required'">
    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.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="CheckAI assistant" icon="robot" href="/features/ai/overview">
    The same tools, in Slack, SMS, and in-app chat.
  </Card>

  <Card title="AI file ingestion" icon="wand-magic-sparkles" href="/features/ai/file-ingestion">
    Drop gig files onto an event and review what's extracted.
  </Card>

  <Card title="Agent discovery" icon="radar" href="/integrations/mcp-discovery">
    How the server is published so agents can find it.
  </Card>

  <Card title="Integrations overview" icon="plug" href="/integrations">
    Everything Soundcheck connects to.
  </Card>
</CardGroup>
