Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the ListenLabs MCP server

Vendor MCP
Open markdown

The ListenLabs MCP connector routes your AI agent's tool calls to ListenLabs's own MCP server through Scalekit. Each user signs in to ListenLabs once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 15 tools.

Tools
15
What they doRead · write · destructive
8 · 5 · 28 read5 write2 destructive
Users sign in with
OAuth app
Scalekit's or your own

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the ListenLabs MCP connection

    In AgentKit > Connections, create a ListenLabs MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for ListenLabs MCP server, so you don't need to register an OAuth app.

  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'listenlabsmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize ListenLabs MCP:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'listenlabsmcp_list_creatable_orgs',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • listenlabsmcp_get_reel_download_urlGet a direct MP4 download link for a reel, for handing the file to another workflow.Read-only

    Get Reel Download Url

    Get a direct MP4 download link for a reel, for handing the file to another workflow. Take reelId from the `Reel ID` line of a reel section in get_study_analysis. Requires view access to the reel, and only works for organizations with video import enabled; other organizations get a 403. status `already_rendered`: `signedUrl` is a signed link that anyone holding it can use to download the MP4 for 24 hours. Treat it as sensitive and do not post it publicly unless the user asks. status `queued` or `already_requested`: the MP4 is not rendered yet. This call starts the render, and Listen Labs emails the user a link when it finishes. Tell the user that, and call this tool again later to get `signedUrl`.

    Inputs

    reelIdstringrequired
    Reel UUID from the `Reel ID` line in get_study_analysis.
  • listenlabsmcp_get_responseDeep-dive into a single respondent's interview.Read-only

    Get Response

    Deep-dive into a single respondent's interview. Returns a structured transcript with question tracking, input types, multiple choice data, and source URLs for each message. Paginated for large interviews.

    Inputs

    readable_idnumberrequired
    Respondent number from get_study_responses
    study_idstringrequired
    Study identifier: the UUID from list_studies, the short link id from a Listen Labs study URL (e.g. zy4GuhxP), or the full pasted URL (e.g. https://listenlabs.ai/p/zy4GuhxP/).
    cursorstring
    Pagination cursor for long transcripts
  • listenlabsmcp_get_study_analysisGet the AI-generated analysis report for a study, rendered as markdown.Read-only

    Get Study Analysis

    Get the AI-generated analysis report for a study, rendered as markdown. Use list_studies first to find studies where has_analysis is true. The report includes sourced respondent quotes with deep-links to the original transcript messages.

    Inputs

    study_idstringrequired
    Study identifier: the UUID from list_studies, the short link id from a Listen Labs study URL (e.g. zy4GuhxP), or the full pasted URL (e.g. https://listenlabs.ai/p/zy4GuhxP/).
  • listenlabsmcp_get_study_responsesGet response transcripts for a study.Read-only

    Get Study Responses

    Get response transcripts for a study. Returns formatted interview transcripts with pagination. Each respondent answer includes a source link to that exact message in the transcript.

    Inputs

    study_idstringrequired
    Study identifier: the UUID from list_studies, the short link id from a Listen Labs study URL (e.g. zy4GuhxP), or the full pasted URL (e.g. https://listenlabs.ai/p/zy4GuhxP/).
    cursorstring
    Pagination cursor from previous response
    max_responsesnumber
    Maximum number of responses to return (default 10, max 50)default 10
    question_numbersarray
    Only include these question numbers in the transcript (1-indexed)
    readable_idsarray
    Filter to specific respondents by their readable ID numbers
  • listenlabsmcp_get_study_stateReturn the current state of a study — title, audience, study guide, questions, screener, and recruitment details.Read-only

    Get Study State

    Return the current state of a study — title, audience, study guide, questions, screener, and recruitment details. Also includes launch eligibility, credit balance, and per-recruitment cost. Call before edit_study or launch_study to inspect the current study configuration.

    Inputs

    studyIdstringrequired
    Study identifier: the UUID from list_studies, the short link id from a Listen Labs study URL (e.g. zy4GuhxP), or the full pasted URL (e.g. https://listenlabs.ai/p/zy4GuhxP/).
  • listenlabsmcp_list_creatable_orgsList organizations the user belongs to where they can create studies.Read-only

    List Creatable Orgs

    List organizations the user belongs to where they can create studies. Returns org ID, name, and role. Supports pagination and case-insensitive name search. Call before create_study when the user has not specified an organization.

    Inputs

    cursorstring
    Pagination cursor from a previous call's nextCursor
    limitinteger
    Page size (default 10, max 25)
    textHintstring
    Case-insensitive substring to filter org names by
  • listenlabsmcp_list_studiesList studies accessible to the authenticated user.Read-only

    List Studies

    List studies accessible to the authenticated user. Returns study ID, name, status, creation date, response count, and whether analysis is available. Paginated (50 per page). Use textHint to filter by study title; use cursor for pagination.

    Inputs

    cursorstring
    Pagination cursor from previous response
    folderstring
    List only studies inside this folder. Matched case-insensitively at any nesting depth; pass a "/"-separated path (e.g. "Research / Q3 2026") when several folders share a name. Not recursive: subfolder contents are excluded.
    folderIdstring
    Folder UUID from a previous folders[] entry. Use when a folder name was reported as ambiguous; takes precedence over folder.
    orgIdstring
    Organization UUID when known. Prefer orgName when the user gave a name.
    orgNamestring
    Organization name to scope studies and folders to. Use when the user names a workspace.
    statusstring
    Filter by study statusone of openclosed
    textHintstring
    Case-insensitive substring to filter study titles by. Use when the user mentions a study name.
  • listenlabsmcp_search_across_studiesSearch across study metadata using a text query.Read-only

    Search Across Studies

    Search across study metadata using a text query. Returns matching studies with relevant context.

    Inputs

    querystringrequired
    Search term to find across studies
    max_resultsnumber
    Maximum number of results to return (default 10)default 10