Descript MCP
Vendor MCP14 toolsOAuth 2.1/DCRMediaAIProductivityConnect to Descript MCP. Import media, export transcripts, publish projects, run AI editing agents, and manage jobs from your AI workflows.
Descript MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. 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> -
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'descriptmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Descript MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'descriptmcp_get_drive_info',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "descriptmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Descript MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="descriptmcp_get_drive_info",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Status report upload — Report that a direct upload failed, was aborted, or was abandoned so the import job stops waiting on that file
- List folders, projects, jobs — List folders in the Descript drive, optionally scoped to a parent folder
- Media import drive, import — Import media files into the Descript drive media library (not a project) via URLs or direct file upload
- Get drive info, project — Return the Descript drive (workspace) connected to the current session, including its ID and name
- Timeline export — Export a project composition as a timeline file (AAF, SESX, EDL, FCPXML, Premiere XML, or DaVinci Resolve XML) for import into another DAW/NLE
- Job wait for, cancel — Poll a Descript job until it completes, streaming progress updates, with an optional timeout
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
descriptmcp_cancel_job#Cancel a queued or running Descript job by its ID.1 param
Cancel a queued or running Descript job by its ID.
job_idstringrequiredUUID of the job to cancel.descriptmcp_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.8 params
Export a project composition as a timeline file (AAF, SESX, EDL, FCPXML, Premiere XML, or DaVinci Resolve XML) for import into another DAW/NLE.
formatstringrequiredTimeline file format.project_idstringrequiredUUID of the project to export from.callback_urlstringoptionalWebhook URL for job completion.composition_idstringoptionalUUID of a specific composition. Omit to use the first composition.create_track_per_filebooleanoptionalGenerate one EDL/XML track per source media file rather than per script. Defaults to false. Not supported for fcp (FCPXML); rejected when true.include_markersbooleanoptionalInclude 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_ratesbooleanoptionalPremiere / 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_spacesbooleanoptionalAAF only. Strip spaces from media filenames for Logic Pro compatibility. Defaults to false. Rejected when true for other formats.descriptmcp_export_transcript#Export a project composition as a transcript document in txt, markdown, HTML, RTF, or SRT format.6 params
Export a project composition as a transcript document in txt, markdown, HTML, RTF, or SRT format.
formatstringrequiredTranscript format.project_idstringrequiredUUID of the project to export from.composition_idstringoptionalUUID of a specific composition. Omit to use the first composition.include_markersbooleanoptionalInclude markers in transcript.include_speaker_labelsstringoptionalSpeaker label mode. off=none, changes=on speaker change, every_paragraph=every paragraph. Defaults to changes.timecodesobjectoptionalTimecode options. When provided, timecodes are included in the output.descriptmcp_get_drive_info#Return the Descript drive (workspace) connected to the current session, including its ID and name.0 params
Return the Descript drive (workspace) connected to the current session, including its ID and name.
descriptmcp_get_project#Retrieve detailed information about a Descript project, including its media files and compositions.1 param
Retrieve detailed information about a Descript project, including its media files and compositions.
project_idstringrequiredUUID of the project.descriptmcp_import_drive_media#Import media files into the Descript drive media library (not a project) via URLs or direct file upload.3 params
Import media files into the Descript drive media library (not a project) via URLs or direct file upload.
add_mediaobjectrequiredMap of display name → media entry. Keys can include folder paths (e.g. "Recordings/intro.mp4"). Each entry is either a URL import (provide "url") or a direct upload (provide "content_type" and "file_size"). URL imports and direct uploads accept an optional "language" for transcription.callback_urlstringoptionalWebhook URL to receive job completion notification.folder_idstringoptionalTarget folder ID in the drive media library.descriptmcp_import_media#Import media into a Descript project from URLs (Google Drive, Dropbox, direct links) or direct file upload.9 params
Import media into a Descript project from URLs (Google Drive, Dropbox, direct links) or direct file upload.
add_mediaobjectrequiredMap of display name → media entry. Keys can include folder paths (e.g. "Recordings/intro.mp4") to organize media into folders in the project. Each entry is one of: a URL import (provide "url"), a direct upload (provide "content_type" and "file_size"), or a multitrack sequence (provide "tracks" array). Use exactly one variant per entry. URL imports and direct uploads accept an optional "language" for transcription.add_compositionsarrayoptionalCompositions (timelines) to create from the imported media. Include this when creating a new project so media appears on the timeline. Omit when importing into an existing project unless the user asks to add to the timeline.callback_urlstringoptionalWebhook URL for job completion.folder_namestringoptionalFolder path to place the new project in (e.g. "Clients/Acme/Videos"). Use "/" to separate nested folders. Only valid when creating a new project (no project_id). Existing folders along the path are reused; missing segments are created automatically. Requires team_access to be set to "edit", "comment", or "view" — projects in folders must be accessible to drive members.project_idstringoptionalUUID of an existing project. Mutually exclusive with project_name.project_namestringoptionalName for a new project. Mutually exclusive with project_id.team_accessstringoptionalTeam access for new projects.update_compositionsarrayoptionalAppend clips to existing compositions in the target project. Requires project_id.workspace_namestringoptionalWorkspace to create the new project in, matched by name (case-insensitive). Only valid when creating a new project (no project_id). Reserved names: "Personal" (private space, requires team_access "none" or omitted) and "General" (shared drive workspace). "General" and custom workspaces require a shared team_access ("edit", "comment", or "view"); defaults to "view" when omitted. Custom workspaces require the caller to be a workspace member.descriptmcp_list_folders#List folders in the Descript drive, optionally scoped to a parent folder.1 param
List folders in the Descript drive, optionally scoped to a parent folder.
parent_pathstringoptionalParent folder path (e.g. "Clients/Acme"). Returns child folders of this folder. Omit to list root-level folders.descriptmcp_list_jobs#List recent Descript jobs with optional filtering by project or job type.2 params
List recent Descript jobs with optional filtering by project or job type.
project_idstringoptionalFilter by project UUID.typestringoptionalFilter by job type.descriptmcp_list_projects#List Descript projects accessible to the authenticated user, with optional filtering and sorting.11 params
List Descript projects accessible to the authenticated user, with optional filtering and sorting.
created_afterstringoptionalFilter projects created after this ISO 8601 timestamp.created_beforestringoptionalFilter projects created before this ISO 8601 timestamp.created_bystringoptionalFilter projects created by this user UUID. Pass `me` to filter by the authenticated user.cursorstringoptionalPagination cursor from a previous response's next_cursor.directionstringoptionalSort direction (default: desc).folder_pathstringoptionalFilter projects by folder path (e.g. "Clients/Acme/Videos"). Use "/" to separate nested folders. Returns only projects directly inside the deepest folder.limitnumberoptionalNumber of projects per page (1-100, default 20).namestringoptionalFilter projects whose name contains this string (case-insensitive).sortstringoptionalSort field (default: created_at).updated_afterstringoptionalFilter projects updated after this ISO 8601 timestamp.updated_beforestringoptionalFilter projects updated before this ISO 8601 timestamp.descriptmcp_prompt_project_agent#Use Descript's AI agent to query, create, or edit a project using a natural language prompt.6 params
Use Descript's AI agent to query, create, or edit a project using a natural language prompt.
promptstringrequiredNatural language instructions for the agent.callback_urlstringoptionalWebhook URL for job completion.composition_idstringoptionalComposition to target. Accepts a full UUID, a 5-character short ID from the project's Descript URL, or the project's full Descript URL (e.g. https://web.descript.com/{project_id}/{short_id}). Use get_project to find available composition IDs for this project. Omit to target the whole project.modelstringoptionalAI model override. Omit for default.project_idstringoptionalUUID of an existing project to edit. Provide either project_id or project_name, not both.project_namestringoptionalName for a new project to create. Provide either project_id or project_name, not both.descriptmcp_publish_project#Publish a Descript project composition as video or audio and return a shareable URL.6 params
Publish a Descript project composition as video or audio and return a shareable URL.
project_idstringrequiredUUID of the project to publish.access_levelstringoptionalDesired access level for the published share page. Defaults to the drive default. Fails with 403 if the requested level is not permitted by the drive publish settings.callback_urlstringoptionalWebhook URL for job completion.composition_idstringoptionalComposition to publish. Accepts a full UUID, a 5-character short ID from the project's Descript URL, or the project's full Descript URL (e.g. https://web.descript.com/{project_id}/{short_id}). Use get_project to find available composition IDs for this project. Defaults to the first composition if omitted.media_typestringoptionalMedia type of the published output (default "Video").resolutionstringoptionalResolution for the published output (default determined by project).descriptmcp_report_upload_status#Report that a direct upload failed, was aborted, or was abandoned so the import job stops waiting on that file.4 params
Report that a direct upload failed, was aborted, or was abandoned so the import job stops waiting on that file.
job_idstringrequiredID of the import job that owns the upload.media_idstringrequiredMedia key (from the import request's add_media / upload_urls) to report.statusstringrequiredfailed = the PUT errored; aborted = cancelled in flight; abandoned = never attempted.detailstringoptionalOptional free-text context (e.g. "HTTP 403 from storage").descriptmcp_wait_for_job#Poll a Descript job until it completes, streaming progress updates, with an optional timeout.2 params
Poll a Descript job until it completes, streaming progress updates, with an optional timeout.
job_idstringrequiredThe job_id returned by import_media, prompt_project_agent, publish_project, or export_timeline.wait_secondsnumberoptionalSeconds to poll for completion (default 300, max 300). Set 0 to return immediately.