The OpusClip MCP connector routes your AI agent's tool calls to OpusClip's own MCP server through Scalekit. Each user signs in to OpusClip once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 30 tools.
- Tools
- 30
- What they doRead · write · destructive
- 16 · 6 · 816 read6 write8 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet 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>Create the OpusClip MCP connection
In AgentKit > Connections, create an OpusClip MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for OpusClip MCP server, so you don't need to register an OAuth app.
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.actionsconst connector = 'opusclipmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize OpusClip MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'opusclipmcp_opusclip_whoami',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "opusclipmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize OpusClip MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="opusclipmcp_opusclip_whoami",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolopusclipmcp_opusclip_apply_editing_scriptDeprecated -- this tool no longer applies an editing script and does not re-render the clip; it is kept only to point you at its replacement.Read-onlyApply Editing Script
Deprecated -- this tool no longer applies an editing script and does not re-render the clip; it is kept only to point you at its replacement. Clip edits now run through `opusclip_edit_clip`: pass the same projectId and clipId plus the ops you want -- that tool's own description carries the vocabulary. It applies the edit server-side and re-renders, so there is no editing script to fetch, mutate, or post back.
Inputs
This tool takes no inputs.
opusclipmcp_opusclip_describe_clipReturns a single clip's detail: transcript, keywords, layout/aspect, score, preview URL, and render_pending -- whether a re-render is still in flight.Read-onlyGet Clip Details
Returns a single clip's detail: transcript, keywords, layout/aspect, score, preview URL, and render_pending -- whether a re-render is still in flight. Poll render_pending after any edit or censor job to know when the new render is ready. Preview-only by design; for the HD file use export_clip.
Inputs
clipIdstringrequired- The clip ID within the project.
projectIdstringrequired- The clip project ID.
opusclipmcp_opusclip_export_collectionReturns the HD download (export) URL for every clip in a collection.Read-onlyExport Collection
Returns the HD download (export) URL for every clip in a collection. list_clips/describe_clip expose preview_url only, mirroring the web app where HD appears behind an explicit export -- HD URLs come only from this tool or export_clip (single clip). Read-only; nothing is written.
Inputs
collectionIdstringrequired- Collection ID to export.
opusclipmcp_opusclip_get_editing_scriptDeprecated -- this tool no longer returns an editing script; it is kept only to point you at its replacement.Read-onlyGet Editing Script
Deprecated -- this tool no longer returns an editing script; it is kept only to point you at its replacement. Clip edits now run through `opusclip_edit_clip`: pass the same projectId and clipId plus the ops you want -- that tool's own description carries the vocabulary. It applies the edit server-side and re-renders, so there is no editing script to fetch, mutate, or post back.
Inputs
This tool takes no inputs.
opusclipmcp_opusclip_get_transcriptReturns the source-video transcript for a clip project: paragraph-level text with per-word timing (ms).Read-onlyGet Clip Transcript
Returns the source-video transcript for a clip project: paragraph-level text with per-word timing (ms). Use for transcript review, search, or as input to other tools. NOT the same as per-clip captions: this is the source video, not any one clip, and editing it here is not possible. The `paragraphs` field is omitted when the project has no transcript yet (still processing or transcription failed). For range-limited API callers, paragraphs are filtered to the billed range.
Inputs
projectIdstringrequired- The clip project ID.
opusclipmcp_opusclip_get_usageReturns the calling organization's current API cap usage so the agent can check headroom BEFORE submitting work: monthly { used, limit, remaining, reset_at } (credits; ~1 credit per minute of source video) and concurrent { used, limit } (in-flight API projects).Read-onlyGet API Usage
Returns the calling organization's current API cap usage so the agent can check headroom BEFORE submitting work: monthly { used, limit, remaining, reset_at } (credits; ~1 credit per minute of source video) and concurrent { used, limit } (in-flight API projects). When the workspace is exempt from caps (Enterprise OpenApi pack or caps disabled) it returns { uncapped: true } with no numbers. Same numbers the X-RateLimit-* response headers carry. Use this to decide whether a batch fits under the cap instead of waiting for the 403.
Inputs
This tool takes no inputs.
opusclipmcp_opusclip_list_brand_templatesLists the brand templates owned by the calling OpusClip organization.Read-onlyList Brand Templates
Lists the brand templates owned by the calling OpusClip organization. Used to populate template pickers before creating new clip projects.
Inputs
This tool takes no inputs.
opusclipmcp_opusclip_list_clipsLists a project's clips with rank, score, title, description, hashtags, duration, and preview/thumbnail URLs.Read-onlyList Clips
Lists a project's clips with rank, score, title, description, hashtags, duration, and preview/thumbnail URLs. Judge sub-scores (hook/coherence/connection/trend) are included when the clip has been scored. preview_url is the watchable artifact; HD download URLs are not listed here -- use export_clip (one clip) or export_collection (many). The response also carries the project's `stage`: an empty list with a stage still in progress means the clips are not ready yet, so poll this tool again rather than concluding the project produced nothing. For a collection's clips, use list_clips_in_collection.
Inputs
projectIdstringrequired- List clips for this clip project.
favoritedboolean- Optional filter on the web-app heart. true returns only the clips the user favorited; false returns only the ones they did not. `total` then counts the filtered list. Omit to list every clip.
opusclipmcp_opusclip_list_clips_in_collectionLists the clips in a collection with rank, score, title, description, hashtags, duration, and preview/thumbnail URLs -- same shape as list_clips (preview_url to watch; HD downloads via export_clip or export_collection).Read-onlyList Clips in Collection
Lists the clips in a collection with rank, score, title, description, hashtags, duration, and preview/thumbnail URLs -- same shape as list_clips (preview_url to watch; HD downloads via export_clip or export_collection). Use list_collections to find a collection ID.
Inputs
collectionIdstringrequired- The collection ID (from list_collections).
opusclipmcp_opusclip_list_collectionsLists the calling organization's clip collections (curated groupings of clips across projects).Read-onlyList Collections
Lists the calling organization's clip collections (curated groupings of clips across projects).
Inputs
This tool takes no inputs.
opusclipmcp_opusclip_list_projectsLists the calling organization's clip projects in reverse-chronological order.Read-onlyList Clip Projects
Lists the calling organization's clip projects in reverse-chronological order. Use this to find a project ID for follow-up tools like list_clips.
Inputs
pageinteger- Zero-based page index.default
0 pageSizeinteger- Results per page (1-100). Defaults to 20.default
20
opusclipmcp_opusclip_list_scheduled_postsLists social posts for the calling organization and returns the schedule_id that opusclip_unschedule_publish requires.Read-onlyList Scheduled Posts
Lists social posts for the calling organization and returns the schedule_id that opusclip_unschedule_publish requires. Two query modes -- pass projectId to list every post for one project, or pass startAt/endAt (ISO 8601 UTC) to list posts in a date window without needing a projectId first. Pass one mode or the other; with neither, the call is rejected. Note that schedule_id is null for immediate posts that were never scheduled.
Inputs
endAtstring- End of the date window, ISO 8601 UTC (e.g. 2026-04-01T00:00:00Z). Use together with startAt as an alternative to projectId -- provide one query mode or the other, not both.
projectIdstring- List every post for this clip project. Filter by clipId client-side. Use this alone, or omit it and provide startAt and endAt instead -- the call is rejected if neither mode is provided.
startAtstring- Start of the date window, ISO 8601 UTC (e.g. 2026-03-25T00:00:00Z). Use together with endAt as an alternative to projectId -- provide one query mode or the other, not both.
opusclipmcp_opusclip_preview_clipsRenders a visual, in-chat preview of a project's clips (playable videos with rank, score, duration, and hashtags) on hosts that support MCP Apps, and returns the same clip data as JSON.Read-onlyPreview Clips
Renders a visual, in-chat preview of a project's clips (playable videos with rank, score, duration, and hashtags) on hosts that support MCP Apps, and returns the same clip data as JSON. Shows the top-ranked clips (6 by default) as a card grid so a large project does not flood the chat; pass limit to show more or fewer (e.g. limit 3 for the top three, or the project total to show all), or clipId to spotlight a single clip as one card. Use after clip generation finishes, or to spotlight one clip, so the user can review results without leaving the conversation.
Inputs
projectIdstringrequired- Preview clips for this clip project.
clipIdstring- Optional: preview only this one clip (single card) instead of the whole project.
limitinteger- Optional: max clips to show, highest-ranked first (default 6). Raise it (or pass the project total) to show more; ignored when clipId is set.default
6
opusclipmcp_opusclip_whoamiReturns the session's current OpusClip org (the one the user picked on the consent screen at connect time, or the default), the user's org count, and API-access status.Read-onlyGet Session Identity
Returns the session's current OpusClip org (the one the user picked on the consent screen at connect time, or the default), the user's org count, and API-access status. The org context is fixed for the life of the connection: to act on a different organization, the user must disconnect and reconnect the OpusClip connector, then pick that organization on the consent screen. MCP-only: the CLI authenticates with a single-org API key.
Inputs
This tool takes no inputs.
opusclipmcp_opusclip_add_clip_to_collectionAdds a clip (projectId + clipId) to a collection.WriteAdd Clip to Collection
Adds a clip (projectId + clipId) to a collection. Calling twice for the same clip+collection returns an error per the underlying service.
Inputs
clipIdstringrequired- The clip ID within the project.
collectionIdstringrequired- Target collection ID.
projectIdstringrequired- The clip project ID.
opusclipmcp_opusclip_analyze_videoRuns visual analysis over a time range of the source video and returns, per keyframe, what the frame contains: face and people boxes, screen regions, panel and document layout, whether the speaker is active, and any tracked subjects.WriteAnalyze Video
Runs visual analysis over a time range of the source video and returns, per keyframe, what the frame contains: face and people boxes, screen regions, panel and document layout, whether the speaker is active, and any tracked subjects. Positions are center-percentage boxes, not pixels. This does NOT reframe or change the clip and does NOT return a crop -- the crop is chosen downstream from this evidence plus the render preference. Analysis is asynchronous and has two modes. START: pass projectId, clipId, startMs and endMs (all four) to begin one; it returns a task_id. POLL: pass taskId ALONE -- set to that task_id value -- and nothing else, repeatedly, until status is 'completed'. Status is one of 'running', 'completed', 'failed' or 'unknown'. Then read `segments`. Segments are absent while pending; that is not an empty result.
Inputs
clipIdstring- START mode: the clip supplying context (genre, render preference). The range below is measured against the source video, not this clip.
endMsnumber- START mode: end of the range to analyze, in ms from the start of the SOURCE VIDEO (not from the start of the clip).
projectIdstring- START mode: the clip project ID. Not needed to poll.
startMsnumber- START mode: start of the range to analyze, in ms from the start of the SOURCE VIDEO (not from the start of the clip).
taskIdstring- POLL mode: the task_id from a previous call. Send it ALONE -- polling needs no projectId and starts no new analysis; every other field is ignored.
opusclipmcp_opusclip_create_collectionCreates a new empty clip collection in the calling organization.WriteCreate Collection
Creates a new empty clip collection in the calling organization. Use add_clip_to_collection to populate it.
Inputs
namestringrequired- Display name for the collection.
opusclipmcp_opusclip_create_upload_linkReturns a Google Cloud Storage signed URL the caller's client can use to upload a local video.WriteCreate Upload Link
Returns a Google Cloud Storage signed URL the caller's client can use to upload a local video. After upload, pass the returned upload_id as videoUrl to opusclip_submit_project. Includes resumable-upload instructions and storage quota.
Inputs
extensionstring- Video file extension. Defaults to mp4.one of
mkvmovmp4defaultmp4 fileNamestring- Optional original filename for logging/dedup. Server generates the storage path.
sizeMbinteger- Approximate file size in MB (storage quota check). Defaults to 1000.default
1000
opusclipmcp_opusclip_duplicate_clipDuplicates a clip within its project, creating an independent copy titled "<title> (Copy)" that can be edited or exported without touching the original.WriteDuplicate Clip
Duplicates a clip within its project, creating an independent copy titled "<title> (Copy)" that can be edited or exported without touching the original. Returns the new clip in the same shape as list_clips. NOT idempotent -- each call creates another copy.
Inputs
clipIdstringrequired- The clip ID within the project.
projectIdstringrequired- The clip project ID.
opusclipmcp_opusclip_create_censor_jobRuns OpusClip's profanity censor on a clip's caption track, replacing matched words with asterisks (and optionally a beep).DestructiveCreate Censor Job
Runs OpusClip's profanity censor on a clip's caption track, replacing matched words with asterisks (and optionally a beep). Triggers a re-render so the new captions appear in the rendered clip. Returns render_pending: true -- the re-render is queued asynchronously, so the new render does NOT exist yet at this point. Do NOT read preview_url or call export_clip immediately; poll list_clips (or describe) for the clip and wait for render_pending to become false before watching, downloading, or sharing the artifact, otherwise you will fetch the OLD render.
Inputs
clipIdstringrequired- The clip ID within the project.
projectIdstringrequired- The clip project ID.
beepSoundboolean- Use a beep sound on censored words. Defaults to false (silent).default
false
opusclipmcp_opusclip_create_post_taskRequests publishing a clip to a connected social account now.DestructiveCreate Social Post
Requests publishing a clip to a connected social account now. This tool does NOT post directly: it returns an approval_url, and the post goes out only after the user reviews and confirms it in the OpusClip app. Use schedule_publish for a future-dated post.
Inputs
clipIdstringrequired- The clip ID within the project.
postAccountIdstringrequired- Target social account ID.
projectIdstringrequired- The clip project ID.
titlestringrequired- Primary caption text. Populates the visible post body on every platform (Facebook, X, Instagram, TikTok, LinkedIn); on YouTube/Dailymotion it is the video title. Required.
descriptionstring- Optional override for the post body/caption. Defaults to `title` when omitted.
mediaTypestring- Platform-specific media type override (e.g. 'reel', 'short').
privacystring- Platform-specific privacy value (e.g. 'public', 'unlisted').
subAccountIdstring- Optional sub-account ID.
opusclipmcp_opusclip_edit_clipEdits a clip with one or more semantic ops in a single call (executed in order, ONE preview re-render at the end), saves the result onto the clip, and supports undo.DestructiveEdit Clip
Edits a clip with one or more semantic ops in a single call (executed in order, ONE preview re-render at the end), saves the result onto the clip, and supports undo. Ops: 'set_captions' / 'set_emoji' / 'set_keyword_highlight' (pass enabled true|false), 'remove_filler_words' (hard-cuts um/uh/like), 'remove_pauses' (hard-cuts silences at or above minPauseSec, default 0.5s), 'trim_section' / 'split_section' / 'drop_section' / 'reorder_sections' (structural edits), 'delete_phrase' / 'replace_phrase', 'set_style', 'add_text_overlay' / 'set_text_overlay' / 'remove_text_overlay', 'remove_emoji' / 'move_emoji', and 'undo'. Batch related edits into ONE call. Pass dryRun: true to preview without saving/rendering.
Inputs
clipIdstringrequired- Clip to edit.
opsarrayrequired- Edits to apply, in order.
projectIdstringrequired- Project owning the clip.
dryRunboolean- Preview only: run the ops and report what would change, saving and rendering nothing.
opusclipmcp_opusclip_export_clipThe explicit export step for ONE clip: returns a download URL for the chosen target, starting the render on demand when that target has no artifact yet (clips are preview-only until exported).DestructiveExport Clip
The explicit export step for ONE clip: returns a download URL for the chosen target, starting the render on demand when that target has no artifact yet (clips are preview-only until exported). target: 'hd' (default, the HD .mp4), '4k' (a 4K .mp4 -- needs a paid plan and a 4K source), or 'xml' (an Adobe Premiere project file -- needs an entitled plan). status 'ready' means export_url is the fresh artifact -- download it; 'rendering' means a render is in flight, already running or just started by this call -- wait a few seconds and call again to poll until 'ready' (calling again never starts a second render); 'unavailable' means the artifact cannot be produced (the org is not entitled to this target, or the source cannot make it) -- a final answer, do not poll. For many clips at once, use export_collection.
- Idempotent
Inputs
clipIdstringrequired- The clip ID within the project.
projectIdstringrequired- The clip project ID.
targetstring- Which export product to hand out (default 'hd'): 'hd' = HD video, '4k' = 4K video (paid plan + 4K source), 'xml' = Adobe Premiere project file (entitled plan). Entitlement is enforced server-side regardless of this value.one of
hd4kxmldefaulthd
opusclipmcp_opusclip_schedule_publishRequests scheduling a clip to publish at a specific time.DestructiveSchedule Publish
Requests scheduling a clip to publish at a specific time. publishAt is ISO 8601 UTC, e.g. '2026-03-25T14:00:00Z'. This tool does NOT create the schedule directly: it returns an approval_url, and the schedule is created only after the user reviews and confirms it in the OpusClip app. Cancel an existing schedule with opusclip_unschedule_publish.
Inputs
clipIdstringrequired- The clip ID within the project.
postAccountIdstringrequired- Target social account ID.
projectIdstringrequired- The clip project ID.
publishAtstringrequired- ISO 8601 UTC timestamp (e.g. 2026-03-25T14:00:00Z).
titlestringrequired- Primary caption text. Populates the visible post body on every platform (Facebook, X, Instagram, TikTok, LinkedIn); on YouTube/Dailymotion it is the video title. Required.
descriptionstring- Optional override for the post body/caption. Defaults to `title` when omitted.
mediaTypestring- Platform-specific media type override (e.g. 'reel', 'short').
privacystring- Platform-specific privacy value (e.g. 'public', 'unlisted').
subAccountIdstring- Optional sub-account ID.
opusclipmcp_opusclip_submit_projectSubmits a long-form video URL to OpusClip.DestructiveSubmit Clip Project
Submits a long-form video URL to OpusClip. Three submit modes, chosen by which params are set: (1) AI clipping (default, no skip flags) -- cuts the source into short, curated, ranked clips. (2) no-clip / full-video reframe -- set skipSlicing:true to keep the FULL video as ONE output (reframe + captions, no cutting into clips); use this for asks like "don't cut it into clips", "reframe the whole video", or "convert horizontal to vertical without clipping" (see skipSlicing). (3) no-curation passthrough -- set skipCurate:true to skip curation entirely; this also returns ONE full-length output rather than multiple clips, and it is NOT ranked or scored, so do not choose it when the user wants several clips (see skipCurate). Returns a project ID the agent can poll via list_clips until processing finishes. Mirrors the CLI's `submit` command. Charges against the org's API/MCP quota.
Inputs
videoUrlstringrequired- Public URL of the long-form video. Supported sources: YouTube, Google Drive, Vimeo, Zoom, Rumble, Twitch, Facebook, LinkedIn, X, Dropbox, Riverside, Loom, Frame.io, StreamYard, or any public S3 mp4 (up to 10GB).
aspectRatiostring- Optional output aspect ratio: 'portrait' (9:16), 'square' (1:1), 'landscape' (16:9), or 'four_five' (4:5). Defaults to portrait.one of
portraitsquarelandscapefour_fivedefaultportrait brandTemplateIdstring- Optional brand template ID (from list_brand_templates).
clipDurationsSecarray- Optional clip duration buckets in seconds, e.g. [[0,30],[30,60]]. Each inner pair is [minSec, maxSec]. Omit to let OpusClip choose.
customPromptstring- Optional free-text prompt steering curation, mirroring the CLI submit --prompt.
enableAutoHookboolean- Optional flag to add an AI-generated hook to the start of each clip. Applies only to a clipping run -- not compatible with skipSlicing or skipCurate. Omit to inherit the brand template / org default.
enableCaptionboolean- Optional flag to turn captions on or off. Omit to inherit the brand template default.
genrestring- Optional curation genre/topic hint, mirroring the CLI submit --genre. Omit to let OpusClip choose.
modelstring- Optional AI clipping model, mirroring the CLI submit --model. Omit to let OpusClip choose.
rangeEndnumber- Optional end of the source-video range to use, in seconds. Must be >= rangeStart. Pair with rangeStart to limit processing to a slice of the video instead of the whole thing. Applies to the default clipping mode, where it bounds which part of the source clips are drawn from. NOT honored in no-clip mode: combined with skipSlicing the render currently ignores the range and outputs the full source, so do not use the pair to ask for one segment of a no-clip render. Omit to use the whole video.
rangeStartnumber- Optional start of the source-video range to use, in seconds. Pair with rangeEnd to limit processing to a slice of the video instead of the whole thing. Applies to the default clipping mode, where it bounds which part of the source clips are drawn from. NOT honored in no-clip mode: combined with skipSlicing the render currently ignores the range and outputs the full source, so do not use the pair to ask for one segment of a no-clip render. Omit to use the whole video.
removeFillerboolean- Optional flag to remove filler words from the rendered clips, mirroring the CLI submit --remove-filler.
skipCurateboolean- Optional flag to skip all curation steps, mirroring the CLI submit --skip-curate. Bypasses curation entirely, which also means the submission returns ONE full-length output (the whole video, or the selected range) rather than multiple clips, with no ranking or scores -- do not choose it when the user wants several clips. Clip-only options (clipDurationsSec, enableAutoHook) do not apply and are rejected when set together. Distinct from skipSlicing, which also returns one full-length output but still runs curation over it.
skipSlicingboolean- THIS IS THE NO-CLIP MODE: set true to keep the FULL video as a single output instead of cutting it into clips -- import / reframe / caption the whole video, with nothing trimmed away. Use for asks like "don't cut it into clips", "reframe the whole video", or "convert horizontal to vertical without clipping". Still available together with this: enableCaption (captions on/off) and aspectRatio (output orientation). Do NOT pair with rangeStart/rangeEnd expecting only that segment -- the range is currently ignored in this mode and the full source is rendered. Conflicts with clip-only options enableAutoHook and clipDurationsSec -- rejected when set together with this. Distinct from skipCurate: this suppresses only the CUTTING and still runs the curation pipeline over the whole video (so the single output can carry curation scores), whereas skipCurate bypasses curation entirely. To skip curation itself, use skipCurate.
sourceLangstring- Optional source language code (e.g. 'en', 'es'). Omit for auto-detect.
targetLangstring- Optional target language code (e.g. 'es', 'fr') to translate the rendered clips into -- translated text and captions, not synthesized voice. Omit to keep the source language.
titlestring- Optional title for the uploaded video, mirroring the CLI submit --title.
topicKeywordsarray- Optional topic keywords - only relevant when model='ClipAnything'.
webhookUrlstring- Optional webhook URL called when the project concludes, mirroring the CLI submit --webhook.
opusclipmcp_opusclip_unschedule_publishRequests cancelling a previously-scheduled social post by schedule ID.DestructiveUnschedule Publish
Requests cancelling a previously-scheduled social post by schedule ID. This tool does NOT cancel directly: it returns an approval_url, and the schedule is cancelled only after the user reviews and confirms in the OpusClip app.
- Idempotent
Inputs
scheduleIdstringrequired- The schedule ID of the previously-scheduled social post to cancel.
No tools match.