# Descript

Work with Descript projects and async Underlord/agent jobs: list projects, submit...

- Repository: https://github.com/Anil-matcha/awesome-muse-connectors (1403 stars)
- Category: AI and agents
- License: MIT
- Last updated: 2026-10-13
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add Anil-matcha/awesome-muse-connectors --skill descript -g -a claude-code -y`
Codex: `npx skills add Anil-matcha/awesome-muse-connectors --skill descript -g -a codex -y`
Cursor: `npx skills add Anil-matcha/awesome-muse-connectors --skill descript -g -a cursor -y`
Gemini CLI: `npx skills add Anil-matcha/awesome-muse-connectors --skill descript -g -a gemini-cli -y`

## Description

Work with Descript projects and async Underlord/agent jobs: list projects, submit publish jobs, poll job status. Trigger phrases: descript, video editing, publish video, descript project.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Descript

## Purpose
Work with Descript's API (open beta): list projects, inspect Underlord/agent jobs, submit a publish job, and poll a job until it finishes. Use when the user wants to drive Descript editing or publishing programmatically.

## Tooling
All commands go through `bin/descript.py`:

```bash
bin/descript.py auth                                   # verify the API key
bin/descript.py projects                               # list projects
bin/descript.py project --id PROJECT_ID                # get one project
bin/descript.py jobs                                   # list Underlord/agent jobs
bin/descript.py job-status --id JOB_ID                 # get job status once
bin/descript.py job-status --id JOB_ID --wait          # poll until job_state is "stopped"
bin/descript.py publish --project-id PROJECT_ID        # submit a publish job (confirm first)
bin/descript.py job-delete --id JOB_ID                 # delete a job (confirm first)
```

Jobs are async: submit with `publish`, then poll with `job-status --wait` until `job_state` is `stopped`, then check `status` for success/partial/error. The publish body schema follows Descript's API docs; pass `--body` as raw JSON if the default empty body is not enough for your case.

Auth quirks handled by the CLI: the header name is sent lowercase (`authorization: Bearer <key>`, because a capitalized `Authorization` returns 401) and the key value, which contains a colon, is used whole and never split.

## Auth
- Provider id: `descript` (credential is collected as `custom.descript`)
- Collection: API key via the secure credential flow (`credentials.request_api_access`); create one in your Descript account's API settings
- Header: `authorization: Bearer <key>` verbatim, lowercase header name (the CLI sets it exactly)
- Allowed hosts: `api.descript.com`
- Status check: `bin/descript.py auth` (lists projects; a successful list proves the key works)

The rest: https://github.com/Anil-matcha/awesome-muse-connectors/blob/HEAD/connectors/descript/SKILL.md
