Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Descript MCP server

Vendor MCP
Open markdown

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

Tools
14
What they doRead · write · destructive
8 · 4 · 28 read4 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 Descript MCP connection

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

    Scalekit credentials are available for Descript 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 = 'descriptmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Descript 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: 'descriptmcp_get_drive_info',
    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
  • descriptmcp_export_timelineExport a project composition as a timeline file (AAF, SESX, EDL, FCPXML, Premiere XML, or DaVinci Resolve XML) for import into another DAW/NLE.Read-only

    Export Timeline

    Export a project composition as a timeline file (AAF, SESX, EDL, FCPXML, Premiere XML, or DaVinci Resolve XML) for import into another DAW/NLE.

    Inputs

    formatstringrequired
    Timeline file format.one of aafsesxedlfcppremieredavinci_resolve
    project_idstringrequired
    UUID of the project to export from.
    callback_urlstring
    Webhook URL for job completion.
    composition_idstring
    UUID of a specific composition. Omit to use the first composition.
    create_track_per_fileboolean
    Generate one EDL/XML track per source media file rather than per script. Defaults to false. Not supported for fcp (FCPXML); rejected when true.
    include_markersboolean
    Include markers in formats that support them (EDL, SESX). Defaults to the format-specific default (true for EDL/SESX/FCP/Premiere/DaVinci, false for AAF).
    snap_frame_ratesboolean
    Premiere / DaVinci Resolve only. When true, snaps to standard broadcast frame rates (24, 25, 30, 50, 60 + NTSC variants). When false, uses the source frame rate. Defaults to true. Rejected when false for other formats.
    strip_spacesboolean
    AAF only. Strip spaces from media filenames for Logic Pro compatibility. Defaults to false. Rejected when true for other formats.
  • descriptmcp_export_transcriptExport a project composition as a transcript document in txt, markdown, HTML, RTF, or SRT format.Read-only

    Export Transcript

    Export a project composition as a transcript document in txt, markdown, HTML, RTF, or SRT format.

    Inputs

    formatstringrequired
    Transcript format.one of txtmarkdownhtmlrtfsrt
    project_idstringrequired
    UUID of the project to export from.
    composition_idstring
    UUID of a specific composition. Omit to use the first composition.
    include_markersboolean
    Include markers in transcript.
    include_speaker_labelsstring
    Speaker label mode. off=none, changes=on speaker change, every_paragraph=every paragraph. Defaults to changes.one of offchangesevery_paragraph
    timecodesobject
    Timecode options. When provided, timecodes are included in the output.
  • descriptmcp_get_drive_infoReturn the Descript drive (workspace) connected to the current session, including its ID and name.Read-only

    Get Drive Info

    Return the Descript drive (workspace) connected to the current session, including its ID and name.

    Inputs

    This tool takes no inputs.

  • descriptmcp_get_projectRetrieve detailed information about a Descript project, including its media files and compositions.Read-only

    Get Project

    Retrieve detailed information about a Descript project, including its media files and compositions.

    Inputs

    project_idstringrequired
    UUID of the project.
  • descriptmcp_list_foldersList folders in the Descript drive, optionally scoped to a parent folder.Read-only

    List Folders

    List folders in the Descript drive, optionally scoped to a parent folder.

    Inputs

    parent_pathstring
    Parent folder path (e.g. "Clients/Acme"). Returns child folders of this folder. Omit to list root-level folders.
  • descriptmcp_list_jobsList recent Descript jobs with optional filtering by project or job type.Read-only

    List Jobs

    List recent Descript jobs with optional filtering by project or job type.

    Inputs

    project_idstring
    Filter by project UUID.
    typestring
    Filter by job type.one of import/project_mediaagentpublishexport/timeline
  • descriptmcp_list_projectsList Descript projects accessible to the authenticated user, with optional filtering and sorting.Read-only

    List Projects

    List Descript projects accessible to the authenticated user, with optional filtering and sorting.

    Inputs

    created_afterstring
    Filter projects created after this ISO 8601 timestamp.
    created_beforestring
    Filter projects created before this ISO 8601 timestamp.
    created_bystring
    Filter projects created by this user UUID. Pass `me` to filter by the authenticated user.
    cursorstring
    Pagination cursor from a previous response's next_cursor.
    directionstring
    Sort direction (default: desc).one of ascdesc
    folder_pathstring
    Filter projects by folder path (e.g. "Clients/Acme/Videos"). Use "/" to separate nested folders. Returns only projects directly inside the deepest folder.
    limitnumber
    Number of projects per page (1-100, default 20).
    namestring
    Filter projects whose name contains this string (case-insensitive).
    sortstring
    Sort field (default: created_at).one of namecreated_atupdated_atlast_viewed_at
    updated_afterstring
    Filter projects updated after this ISO 8601 timestamp.
    updated_beforestring
    Filter projects updated before this ISO 8601 timestamp.
  • descriptmcp_wait_for_jobPoll a Descript job until it completes, streaming progress updates, with an optional timeout.Read-only

    Wait For Job

    Poll a Descript job until it completes, streaming progress updates, with an optional timeout.

    Inputs

    job_idstringrequired
    The job_id returned by import_media, prompt_project_agent, publish_project, or export_timeline.
    wait_secondsnumber
    Seconds to poll for completion (default 300, max 300). Set 0 to return immediately.