Takes for Mac
MCPB · TAKES-MCP.MCPB
Tools for the Takes Mac app: scripts, takes, edits and posts for talking-head videos
Available components
Last scanned (18 hours ago)
Scores higher than 75% of MCPB servers
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 1 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability60
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 16297 tokens (~220/item across 74 items; 74 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management13
- Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 75 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 17 Oct 26 +1
- Security disclosure: fail → pass ▲ functional
- 15 Oct 26 +4
- Tool safety: pass → unverified ▼ security
- Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
- Schema quality: 192 → 220 ▼ functional
- Schema quality: 192 → 218 ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Tool coverage: 74% → 100% ▲ functional
- Stability: unverified → 0.07 ▲ functional
- Destructive annotations: All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation. functional
- Package version: 2026.10.9 → 2026.10.15 functional
- Package version: 2026.10.9 → 2026.10.13 functional
- 13 Oct 26 +26
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 74 functional
- First check of Destructive annotations: 0 functional
- First check of Schema quality: good functional
- 12 Oct 26 9
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 17 Oct 2026 · Analysed mcpb/https://github.com/marvtub/takes-public/releases/download/v2026.10.15/takes-mcp.mcpb@2026.10.15
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | mcpb |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_broll ~124
Put b-roll clips into a session's broll/ folder (an APFS clone: no extra disk space), so they show on its Assets tab next to the takes. Use the file from list_broll.
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | From list_broll, e.g. '1 Desk work/2023-11 High-Angle Typing at Desk (V).mov'. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
No output schema declared.
No examples provided.
change_voice ~217
Say a clip again in another voice with the ElevenLabs voice changer: same words, timing and emotion. The user acts the line, a character voice comes out. Whole file or start/end (at most 5 minutes); writes generated/<file>-<voice>-vN.wav, and an .mp4 with the video for a video.
| Name | Type | Req | Description |
|---|---|---|---|
| end | number | – | End, in seconds. |
| file | string | – | Or a session file. |
| model | string | – | Default eleven_multilingual_sts_v2. |
| remove_noise | boolean | – | Remove background noise first. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| start | number | – | Start, in seconds. |
| take | string | – | Take number. |
| voice | string | – | A voice name or id from the ElevenLabs account (voices). Leave out for the default voice (the user picks it in Plugins › Voices). |
No output schema declared.
No examples provided.
check_edit ~201
Check each new edit before you show it. It compares the edit with its take: sound, picture, sync, cut words, undone fixes, rules with a check. Fix each failure in a new version and check that. pass null: did not run (skip says why). A failure looks wrong: tell the user its say. review: with a Gemini key, Gemini watches the edit with the rules (about 5 cents, cached per version); without one, a frame sheet for you to look at. Follow review.note.
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | E.g. 'edits/hook-v4.mp4'. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| source | string | – | Optional take file, when not the keeper. |
| watch | boolean | – | false: skip Gemini's review (default true). |
No output schema declared.
No examples provided.
clean_voice ~273
Make a take's voice sound like a proper mic (the user's voice-cleanup: room echo, noise, clipping, hum, then EQ, compressor and loudness). The first call starts it in the background (about 15-60 s per minute of audio); get_session then shows 'voice' under the take, with 'file' when it is done: use that WAV as the take's voice in edits instead of the audio in the .mov. Later calls only change the settings (instant). The user sets the same in the app's player.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | camera (default) or screen: the file with the voice. |
| loudness | string | – | normal = -14 LUFS (default), quiet = -18 LUFS (under music). |
| on | boolean | – | false = use the original audio (keeps the cleaned files). |
| rerun | boolean | – | Clean again from the raw take. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| strength | number | – | 0-1. How much of the cleanup: 1 = full (default), lower keeps some room. |
| take | integer | yes | Take number. |
No output schema declared.
No examples provided.
copy_library ~264
Copy library files from one library to another: 'style:<Name>' or a project name (copy to a new 'style:<Name>' to start a new style from an old one). items are paths inside the library (README.md, tokens.json, assets/Logos/mark-v2.svg); omit for everything. tokens.json merges by token name; other existing files are skipped, never overwritten. move=true trashes the copied files in the source.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | yes | A library: 'style:<Name>' for one of the user's styles (e.g. 'style:Magazine'; a new name makes a new style), a project name for that project's own additions, or 'comments' for the comment copilot's… |
| items | array | – | Paths inside the library. Omit for everything. |
| move | boolean | – | Move instead of copy. Default false. |
| to | string | yes | A library: 'style:<Name>' for one of the user's styles (e.g. 'style:Magazine'; a new name makes a new style), a project name for that project's own additions, or 'comments' for the comment copilot's… |
No output schema declared.
No examples provided.
create_post_variants ~227
Add other versions of the session's LinkedIn or X post (e.g. 'Story first', 'Shorter', 'Single tweet'). The app shows them as tabs above the post preview; the user compares, edits, comments and picks one with 'Use as main'. Only the main post is scheduled. Write the main post with set_post first. Edit a variant later with set_post variant=<slug>. For different openings of the same post use set_post_hooks.
| Name | Type | Req | Description |
|---|---|---|---|
| platform | string | – | Which post of the session: linkedin (default, posts/linkedin.md), x (posts/x.md), youtube (the long wide video: title + description, posts/youtube.md) or vertical (one vertical video and caption for… |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| variants | array | yes | The versions: [{name, text, tweets, note}]. |
No output schema declared.
No examples provided.
create_project ~31
Create a project (a folder in the Takes library).
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Name of the new project. |
No output schema declared.
No examples provided.
create_session ~120
Create a recording session with a title and the script to read on the teleprompter, optionally with variants. Offers it in the Takes app unless open=false (see open_in_app).
| Name | Type | Req | Description |
|---|---|---|---|
| open | boolean | – | Offer the session in the app. Default true. |
| project | string | – | Project name. Created if missing. Default Inbox. |
| script | string | – | Markdown script shown on the teleprompter. |
| title | string | yes | The session's title. |
| variants | array | – | Optional [{name, script, note}]. |
No output schema declared.
No examples provided.
create_style ~149
Start a new style from an example the user gives: a link, a video, an image, or words. Makes the style folder (status new) and returns the steps: study the source, write the guide and tokens, build the parts, render the preview. The user compares it with the other styles on the Styles board and keeps or trashes it.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | yes | One line: the look. |
| name | string | yes | Style name, 1-3 words, e.g. 'Bold Notes'. |
| source | string | – | What it is made from: the link, file path or words. |
| template | string | – | Optional video-edit template it goes with. |
No output schema declared.
No examples provided.
create_variants ~120
Add alternative versions of the script (e.g. 'Punchy hook', 'Story first'). Each shows up as a tab above the teleprompter; the user can read any of them and pick one as main. Use this instead of overwriting the main script when offering options.
| Name | Type | Req | Description |
|---|---|---|---|
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| variants | array | yes | The variants: [{name, script, note}]. |
No output schema declared.
No examples provided.
cut_take ~282
Cut takes into one clip: video at a constant frame rate, the voice in sync, and word times for the clip. It is the default for a cut of a take: it fixes the take's audio offset and frame rate, moves a cut point that falls inside a word to the word's edge (listed in 'moved'), and uses the take's clean voice when clean_voice is done. For what it cannot do (a J/L cut, a speed change, a cut inside a word, an effect), use your own ffmpeg on its clip and .wav, or on the take with get_session's audio_offset_s, and tell the user what you did. set_best_cut only marks a range; cut_take makes the video. Writes _work/<name>-vN.mp4, .wav (voice only) and .words.json in the session. A short cut comes back done; a long one returns a job.
| Name | Type | Req | Description |
|---|---|---|---|
| segments | array | yes | The parts to keep, in order: [{take, in, out}], seconds of the take. Add kind: 'screen' to cut a take's screen file. rough_cut's cut has this shape. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
No output schema declared.
No examples provided.
delete_post_variants ~143
Move post variants to the macOS Trash (their text stays in post history).
| Name | Type | Req | Description |
|---|---|---|---|
| platform | string | – | Which post of the session: linkedin (default, posts/linkedin.md), x (posts/x.md), youtube (the long wide video: title + description, posts/youtube.md) or vertical (one vertical video and caption for… |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| variants | array | yes | Post variant ids from get_session. |
No output schema declared.
No examples provided.
delete_variants ~71
Move variants to the macOS Trash (their text stays in history).
| Name | Type | Req | Description |
|---|---|---|---|
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| variants | array | yes | Variant ids from get_session. |
No output schema declared.
No examples provided.
design_voice ~203
Design a new ElevenLabs voice from a description ('warm German woman, 40s, calm, slow'): writes three samples (generated/voice-<name>-1..3.mp3 with session, else _library/voices/) for the user to hear on the Assets tab. Then save the pick: save=<the sample's save id> with name.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | Age, gender, accent, tone, pace, use. |
| name | string | – | Name of the voice (save) or of the sample files. |
| save | string | – | A sample's save id: keep that voice. |
| session | string | – | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| set_default | boolean | – | With save: make it the default voice. |
| text | string | – | Optional sample text, 100-1000 characters. |
No output schema declared.
No examples provided.
fix_words ~438
Correct what was said in a take or clip: ElevenLabs says the new words in the voice (default: The user's default voice, often a clone) with the sentences around them for the same tone, and Takes cuts them in at the word edges with the take's cleaned voice when there is one. old = the words as said (from the transcript; Takes transcribes the file first when it has no <stem>.words.json), or start/end in seconds. Writes generated/<file>-fix-vN.wav, plus an .mp4 with the video when the new words fit the old time (speed 0.8-1.25x), so the take's times still hold. The lips do not move with the new words: say so when the fix is on camera.
| Name | Type | Req | Description |
|---|---|---|---|
| end | number | – | End, in seconds. |
| file | string | – | Or a session file (an edit, an audio file). |
| model | string | – | ElevenLabs model id. Default: the best one for the job. |
| near | number | – | When old is said more than once: about where, in seconds. |
| new | string | yes | The words to say instead. |
| old | string | – | The words to replace, as said. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| similarity | number | – | Similarity to the voice 0-1. Default: the voice's own. |
| speed | number | – | Speech speed 0.7-1.2. Default 1. |
| stability | number | – | Voice stability 0-1. Default: the voice's own. |
| start | number | – | Start, in seconds. |
| style | number | – | Style exaggeration 0-1. Default: the voice's own. |
| take | string | – | Take number. |
| voice | string | – | A voice name or id from the ElevenLabs account (voices). Leave out for the default voice (the user picks it in Plugins › Voices). |
No output schema declared.
No examples provided.
get_comments ~257
The user's review comments in a session or a library (pass library, not session). Video: 'when' (start/end s), an optional rect (x,y,w,h fractions from top left) and a 'frame' PNG with the area outlined in orange: read it to see what the comment means; 'said' quotes the words spoken then (from the video's transcript). Image: rect + frame. Text (script, variant, README.md, tokens.json): 'quote' is the selected text. Default: open comments.
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | – | Optional: only this file, e.g. 'edits/hook-v2.mp4'. |
| library | string | – | A library: 'style:<Name>' for one of the user's styles (e.g. 'style:Magazine'; a new name makes a new style), a project name for that project's own additions, or 'comments' for the comment copilot's… |
| session | string | – | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| status | string | – | open (default), resolved or all. |
No output schema declared.
No examples provided.
get_edit_recipe ~128
The recipe of an edit: how it was made (cut list, voice, layers, music, sfx, cover, checks, the exact commands) and the versions before it. get_session shows a short form of the newest one.
| Name | Type | Req | Description |
|---|---|---|---|
| edit | string | – | 'hook-v4', 'edits/hook-v4.mp4' or 'hook' for its newest. Default: the newest edit. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
No output schema declared.
No examples provided.
get_job ~159
A job's status (starting, running, done, failed, stopped, lost), progress, time left, last log lines, exit code and files. wait_s waits for the end in this call (other takes tools wait too); call again to keep waiting. With session and no id: the running jobs and those that ended in the last day.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | Job id from run_job, higgsfield or replicate. |
| session | string | – | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| wait_s | number | – | Seconds to wait for the job to end, 0 to 50. Default 0. |
No output schema declared.
No examples provided.
get_library ~169
Read the style a video uses: The user picks one of the named styles per video or per project (e.g. Magazine), and the project library adds to it. Returns the style's name and 'template', the style library and the project library (README.md style guide, tokens.json colours/type/spacing/radius, assets by group with every version, fonts, open comment counts) and the merged tokens. Without project: the list of styles. Read it before you design anything: a thumbnail, captions, a motion graphic, a slide.
| Name | Type | Req | Description |
|---|---|---|---|
| project | string | – | Project name, when there is no session. |
| session | string | – | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
No output schema declared.
No examples provided.
get_plan ~96
The user's posting plan: the weekdays to post, the slots in the next 14 days, which are empty (next_gap), the buffer (covered slots before the first empty one) and ready posts with no time yet. Use it to tie a new take or edit to the slot it can fill, and to suggest a time when the user marks a post ready. No plan yet: ask the user which days, then set_plan.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_post_queue ~187
The posting plan: every LinkedIn and X post the user marked ready or that is scheduled, across all projects, sorted by time. Each has platform, session, title, text (X: also 'tweets'), media_path (the video to upload), status, at (iso, utc, local in the chosen tz, this_mac = the Mac's zone, which LinkedIn's scheduler uses) and 'action': what to do on that platform now (schedule, move, replace text, delete, or nothing). The user sets the times with [schedule] on the post tab, or asks you to pick them.
| Name | Type | Req | Description |
|---|---|---|---|
| drafts | boolean | – | Also list drafts (not marked ready yet), e.g. for a pipeline overview. Default false. |
| platform | string | – | Optional: only this platform. |
| posted | boolean | – | Also list posts already live. Default false. |
No output schema declared.
No examples provided.
get_rules ~161
The rules learned from the user's comments, one file per step: plan (storyboard, script), make (sound, cut, picture, captions, graphics), package (thumbnail), publish (post-all, post-linkedin, post-x, post-youtube, post-vertical), engage (comments) and other. Read and follow the steps you work on before you write, edit or design. get_session and next_path show new ones once per chat; a write tool shows unseen ones once. Without area: the steps with rule counts (full=true at 10).
| Name | Type | Req | Description |
|---|---|---|---|
| area | string | – | Steps, comma separated ('cut,sound'). 'post' = every post step, 'edit' = the five make steps, 'all' = every rule. |
No output schema declared.
No examples provided.
get_script_version ~67
Get the full text of one saved version.
| Name | Type | Req | Description |
|---|---|---|---|
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| version | string | yes | Version id from the history list. |
No output schema declared.
No examples provided.
get_session ~183
Get a session: its id, title, full script, and every take with file path, duration, keeper flag, name and start time (camera and screen files of one take share a number), plus every asset file (edits/, thumbnails/, stills/, assets/), the folder rules ('folders') and 'warnings' about files in the wrong place: fix those. Each take shows edit_ready (word times are ready). Cut takes with cut_take and rough_cut by default: they fix the audio offset and frame rate. checks: the check_edit state of each newest edit. rules: the rules for the session's next step that this chat has not seen yet; follow them.
| Name | Type | Req | Description |
|---|---|---|---|
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
No output schema declared.
No examples provided.
higgsfield ~583
Make or change a video with Higgsfield (Seedance, Kling, Veo and 30+ more video models) from inside Takes. Video only: images go to make_image. Returns at once; the job runs in the background and the file lands in <session>/generated/<name>-vN, where the Assets tab shows it. With shot=<id> the storyboard shot shows 'Generating' and then plays the clip (aspect ratio = the storyboard format, length = the shot's length, 4-15 s). For a shot, write a real-footage prompt from the shot's do and say (subject, setting, light, camera move); pass image='sketch' to use the sketch only as a composition reference with params {mode: omni_reference}, and say in the prompt that the result is real footage, not a drawing. Change a video: video=<session file> with params {mode: video_edit} (Seedance), or workflow=reframe with aspect_ratio for a new shape. Default model: the one the user picked on Plugins › Higgsfield (higgsfield_status default_model); other models by id (`higgsfield model list` in Bash; `higgsfield model get <id>` for params). Each job costs the user's Higgsfield credits: one job per ask, never a batch nobody asked for. Not installed or not signed in: tell the user to open Plugins › Higgsfield.
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | – | e.g. 16:9, 9:16, 4:5, 1:1. |
| duration | number | – | Seconds (video). |
| end_image | string | – | Last frame (session file). |
| image | string | – | A reference image: a session file, or 'sketch' for the shot's sketch. |
| model | string | – | A Higgsfield model id. Leave out for the default. |
| name | string | – | Short file name. Default: shot-<id> or the prompt's first words. |
| params | object | – | More model params, e.g. {"mode": "omni_reference", "resolution": "1080p"}. |
| prompt | string | – | What the result shows. Not needed for workflow=reframe. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| shot | string | – | A storyboard shot id: the clip becomes that shot's video. |
| start_image | string | – | First frame (session file or 'sketch'). |
| video | string | – | A session video to change or reframe (take number or path). |
| workflow | string | – | reframe (new aspect ratio) or draw_to_video. |
No output schema declared.
No examples provided.
higgsfield_status ~77
Is Higgsfield installed and signed in, and how many credits are left; with session, its Higgsfield jobs (running, done, error).
| Name | Type | Req | Description |
|---|---|---|---|
| session | string | – | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
No output schema declared.
No examples provided.
import_take ~273
Add recordings that already exist (e.g. from QuickTime, a phone, a download, or files placed in the session folder) to a session as takes. Never edit session.json by hand: this names the file take-NN-[name-]camera.<ext>, gives it the next take number, reads its length and lists it. One take: path (+ screen_path for its screen recording). Several: takes=[{path, screen_path, name, keeper}], one take each, in order. Files outside the session are copied (move=true moves them); files already in the session folder are renamed in place.
| Name | Type | Req | Description |
|---|---|---|---|
| keeper | boolean | – | true stars the take as the keeper. |
| move | boolean | – | Move files instead of copying them. Default false. |
| name | string | – | Name for the take. |
| path | string | – | The camera (or only) video file of one take. |
| screen_path | string | – | Optional: the screen recording of the same take. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| takes | array | – | Several takes: [{path, screen_path, name, keeper, kind}], one take each, in order. |
No output schema declared.
No examples provided.
list_broll ~154
List the user's own b-roll (_library/broll/<folder>/): self-filmed clips at the desk, hands typing, reactions, lifestyle, outdoor. Each has title, folder, filmed (YYYY-MM), orientation, duration, description, keywords and path. Use it for B-ROLL shots in a storyboard or an edit before asking the user to film new b-roll. The user browses the same clips on the app's B-roll tab.
| Name | Type | Req | Description |
|---|---|---|---|
| folder | string | – | e.g. Desk work, Hands close-up, Reactions, Lifestyle, Outdoor. |
| orientation | string | – | Only vertical or only horizontal clips. |
| query | string | – | Words that must all be in the title, description or keywords. |
No output schema declared.
No examples provided.
list_music ~158
List the user's music and sound effects (_library/audio/Music, SFX, ...): file, title, artist, genre, bpm, duration, path. New downloads in the source folder (Epidemic Sound) are copied in first. Use for picking a song or an SFX for an edit. SFX are short effects (whoosh, pop, typing, notification). Mix songs and effects into a new version of the edit with ffmpeg, under the voice: the app plays only the file, never a song or an effect beside it. The app's Use button asks you for this.
| Name | Type | Req | Description |
|---|---|---|---|
| group | string | – | Music or SFX. Omit for all. |
| query | string | – | Words in the file name. |
No output schema declared.
No examples provided.
list_projects ~21
List Takes projects and how many sessions each has. Start here.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_sessions ~35
List sessions in a project, newest first, with take and keeper counts.
| Name | Type | Req | Description |
|---|---|---|---|
| project | string | yes | Project name from list_projects. |
No output schema declared.
No examples provided.
make_image ~510
Make or change an image straight from Google or OpenAI (much cheaper than a Higgsfield image: never use higgsfield for images). Drafts first, final last: while the user finds the direction, draw with GPT Image (fast, 1536 px at most): flare (GPT Image 2.5 Flare, the default for a new image) or sunburst (GPT Image 2.5 Sunburst, the default for a change or with references). When the user likes a draft, make its final: from=<that draft> redraws it with Nano Banana 2.1 at 4K, the newest and sharpest, with the draft and its references as the guide and the same prompt (add one only for a change). Never make a final before the user picks. When one model fails the next one draws. Waits about 10-60 s and returns the file, <session>/generated/<name>-vN.png, and the model that drew it; the Assets tab shows both. Change an image: images=[session files] (a thumbnail, a still, 'sketch' with shot=<id>) and say what to change. One image per ask.
| Name | Type | Req | Description |
|---|---|---|---|
| final | boolean | – | Draw the final now with Nano Banana 2.1 at 4K, without a draft. Prefer a draft, then from. |
| format | string | – | Shape, e.g. 16:9, 9:16, 4:5, 1:1. Default 1:1, or the input's shape. |
| from | string | – | The draft the user picked: make its final (Nano Banana 2.1, 4K, same picture). |
| images | array | – | Session images to change or use as references (paths, or 'sketch' with shot). |
| model | string | – | For a draft: default flare, or sunburst with images. |
| name | string | – | Short file name. Default: the prompt's first words. |
| prompt | string | – | What the image shows, or what to change in the given images. Optional with from. |
| quality | string | – | Default medium. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| shot | string | – | With images=['sketch']: the shot whose sketch to use. |
No output schema declared.
No examples provided.
move_sessions ~40
Move sessions to another project (created if missing).
| Name | Type | Req | Description |
|---|---|---|---|
| project | string | yes | Target project. |
| sessions | array | yes | Sessions as 'Project/folder'. |
No output schema declared.
No examples provided.
next_path ~310
The path for a new file: the right folder and the next version. kind=edit: <session>/edits/<name>-vN.mp4. kind=thumbnail: <session>/thumbnails/<name>-vN.png (the edit's name, plus an option word for several). kind=library: <library>/assets/<group>/<name>-vN.<ext>. Call it before you write any of these. For edit and thumbnail it also gives the user's rules for that step once per chat: follow them.
| Name | Type | Req | Description |
|---|---|---|---|
| ext | string | – | File extension. Default .mp4 for edit, .png for thumbnail; required for library. |
| group | string | – | kind=library: Logos, Icons, Images, Motion, or another one-word group. |
| kind | string | yes | edit, thumbnail or library. |
| library | string | – | A library: 'style:<Name>' for one of the user's styles (e.g. 'style:Magazine'; a new name makes a new style), a project name for that project's own additions, or 'comments' for the comment copilot's… |
| name | string | yes | Short name, e.g. 'webmcp-short' or 'logo-mark'. A -vN suffix is ignored. |
| session | string | – | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
No output schema declared.
No examples provided.
open_in_app ~95
Offer the user a project, session or file (e.g. a new edit) in the Takes app. It never takes focus or plays anything: the session gets a dot and opens only on a click. Once per finished result, not for drafts or in-between steps.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Project name, 'Project/folder', 'Project/folder/edits/x-v2.mp4', or absolute path. |
No output schema declared.
No examples provided.
phone_videos ~165
The videos the user AirDropped from an iPhone that wait in ~/Downloads (AirDrop or iPhone recordings only; all=true for every video), oldest first, with length, recording time and, with listen=true, the first words said (Whisper, about 10 s per video). Also lists the newest sessions with the start of each script, so you can match each video to its session and import_take it with move=true.
| Name | Type | Req | Description |
|---|---|---|---|
| all | boolean | – | Every video in the folder, not only AirDrop/iPhone ones. |
| days | integer | – | Only files from the last N days. Default 14. |
| folder | string | – | Default ~/Downloads. |
| listen | boolean | – | Transcribe the first 40 s of each video. Default false. |
No output schema declared.
No examples provided.
plan_video ~197
Put a session's video card on a day of the user's Plan board (the calendar in Takes), move it to another day, or take it off (day empty). Use it when the user asks you to plan videos; one call per video. A card shows the session's title and thumbnail; the user drags cards to reorder them. A card covers that day's posting slot as planned; a post with a time fills it. The board grows to show the card's week. Returns get_plan.
| Name | Type | Req | Description |
|---|---|---|---|
| before | string | – | Optional: another planned session on that day; the card goes before it. Default: last on that day. |
| day | string | – | YYYY-MM-DD, up to 12 weeks ahead. Empty: take the card off. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
No output schema declared.
No examples provided.
post_history ~196
Every saved version of the post and its variants, newest first: version, draft ('main' or a variant slug), author (user or claude), note, created, preview. Pass version to get its full text, e.g. to compare with the current post. A version is saved on every change by Claude and while the user edits.
| Name | Type | Req | Description |
|---|---|---|---|
| platform | string | – | Which post of the session: linkedin (default, posts/linkedin.md), x (posts/x.md), youtube (the long wide video: title + description, posts/youtube.md) or vertical (one vertical video and caption for… |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| version | string | – | Optional: one version's full text. |
No output schema declared.
No examples provided.
promote_variant ~70
Make a variant the main script. The old main stays in history.
| Name | Type | Req | Description |
|---|---|---|---|
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| variant | string | yes | Variant id from get_session. |
No output schema declared.
No examples provided.
publish_edit ~354
Save a checked render as the next version, edits/<name>-vN.mp4, with its recipe. In one call: reads the checks the render ran (it refuses on a failed check; accept=[{rule, why}] for a fail you meant), puts the version on the posts that follow this edit (a version the user picked stays), answers the review comments it fixes (replies: like reply_comment; fixed_in and resolve are set for you) and saves note as the changelog line. Call it once per version. To show another file on a post, call set_post media=... after. Its review (Gemini watched it, or a frame sheet when there is no key) is for the next version: follow review.note.
| Name | Type | Req | Description |
|---|---|---|---|
| accept | array | – | [{rule, why}]: failed checks you keep on purpose. rule is a rule id or a check id. Saved in the recipe. |
| go_back | boolean | – | true to save even when a newer version was saved while this render ran. |
| note | string | yes | One short line the user reads under the edit, at most 60 characters. Say what the viewer will notice, in plain words. No field names or numbers in dB. Example: 'Music softer. Cut the restart at 0:41.' |
| render | string | yes | The job id from render_edit, or its render path. |
| replies | array | – | Comments this version fixes: [{id, text, lesson, rule?}], as in reply_comment. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
No output schema declared.
No examples provided.
rename_take ~91
Name a take. Its files become take-NN-<name>-camera.mov / -screen.mov. Empty name resets.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | New name. Empty resets it. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| take | integer | yes | Take number. |
No output schema declared.
No examples provided.
render_edit ~497
Build an edit from a recipe, as a job, and check it. First version: recipe={name, cut} (cut = rough_cut's cut) plus what you need: frame {shape '9:16'|'16:9'|'1:1'|'4:5'|'source', crop}, over (picture layers: alpha graphics or b-roll, with at/in/out), music and sfx (file, at, gain_db), steps (commands that make the layers, run in _edit/<name>/), cover (a thumbnail). Next version: base=<name> and changes (a JSON merge patch on the newest recipe; a list replaces the whole list; {"name": "hook-vertical"} starts a new line). Takes uses the clean voice once and never uses a finished edit as an input. One render of a name runs at a time: to compare two options, give the second a new name. Returns a job; then publish_edit.
| Name | Type | Req | Description |
|---|---|---|---|
| base | string | – | The edit to start from: 'hook' (its newest version), 'hook-v4' or 'edits/hook-v4.mp4'. Required when the session has more than one edit name with a recipe. |
| changes | object | – | A JSON merge patch on the base recipe. A list replaces the whole list, so repeat the whole entry: {"music": [{"file": "@library/audio/Music/Calm.mp3", "at": 0, "in": 14, "gain_db": -21, "duck_db": 8,… |
| go_back | boolean | – | true to build on an older version on purpose. Without it, an old base is refused. |
| recipe | object | – | A whole recipe. For a first version, or to rebuild an edit that has no recipe. Times in over, music and sfx are seconds of the cut (a cover adds its own). |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| wait_s | integer | – | Wait up to this many seconds (max 120) and return the finished result inline. Default 0. |
No output schema declared.
No examples provided.
replicate ~591
Make or change a video on Replicate: the same models as Higgsfield (Seedance 2.5, Kling, Veo, ...) at a price per second of video, no plan. Returns at once; the job runs in the background and the file lands in <session>/generated/<name>-vN.mp4, where the Assets tab shows it. model: owner/name; leave it out for the user's default (replicate_status lists the default models, the first is the default; pick another of them when it fits better). Takes maps prompt, image (the FIRST FRAME), end_image, video, duration, aspect_ratio, resolution and audio to the model's own input names; anything else goes in params by the model's names (call replicate_model first to see its inputs, defaults and allowed values). File inputs, in those fields or params, take a session file, a take number or 'sketch' (the shot's sketch); Takes uploads them. With shot=<id> the storyboard shot shows 'Generating' and then plays the clip (aspect ratio = the storyboard format, length = the shot's length, 4-15 s). For a shot, write a real-footage prompt from the shot's do and say; never use the sketch as the first frame (the video would look drawn): pass it only to a reference-image input if the model has one. Each job costs the user money: one job per ask, never a batch nobody asked for. No token: tell the user to open Plugins › Replicate.
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | – | e.g. 16:9, 9:16, 1:1. |
| audio | boolean | – | Make sound with the video, when the model can. |
| duration | number | – | Seconds. |
| end_image | string | – | Last frame (session file). |
| image | string | – | First frame: a session file or take still. Not a sketch. |
| model | string | – | owner/name (or owner/name:version). Leave out for the default. |
| name | string | – | Short file name. Default: shot-<id> or the prompt's first words. |
| params | object | – | More inputs by the model's own names (replicate_model lists them). |
| prompt | string | – | What the clip shows and how the camera moves. |
| resolution | string | – | e.g. 480p (cheap drafts), 720p, 1080p. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| shot | string | – | A storyboard shot id: the clip becomes that shot's video. |
| video | string | – | A session video to change (take number or path), for models that take one. |
No output schema declared.
No examples provided.
replicate_model ~67
A Replicate model's inputs (type, default, allowed values, what each does), so a job can set what the user asks for. Leave model out for the default.
| Name | Type | Req | Description |
|---|---|---|---|
| model | string | – | owner/name, e.g. bytedance/seedance-2.5. |
No output schema declared.
No examples provided.
replicate_status ~74
Is a Replicate token set, which account, the user's default video models; with session, its Replicate jobs (running, done, error).
| Name | Type | Req | Description |
|---|---|---|---|
| session | string | – | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
No output schema declared.
No examples provided.
reply_comment ~387
Reply to review comments and resolve them. After a round of fixes, send ONE call with replies=[{id, text, resolve, fixed_in, fixed_at, lesson}] for every comment. fixed_in: the new version's file; fixed_at: the second in it where the fix shows (a click on the reply jumps there). text: one line ('Caption 20% smaller'). Unclear comment: ask a question, resolve omitted. In a session each resolved comment needs a lesson: a rule id from get_rules, with missed=true when the edit broke that rule (the same mistake again) or missed=false for a new ask or taste near it; 'new' with rule={area, text} (it applies to the next videos too); else 'one-off'.
| Name | Type | Req | Description |
|---|---|---|---|
| fixed_at | number | – | As in replies. |
| fixed_in | string | – | As in replies. |
| id | string | – | Single reply: comment id. Prefer replies=[...]. |
| lesson | string | – | As in replies. |
| library | string | – | A library: 'style:<Name>' for one of the user's styles (e.g. 'style:Magazine'; a new name makes a new style), a project name for that project's own additions, or 'comments' for the comment copilot's… |
| missed | boolean | – | As in replies. |
| replies | array | – | One reply per comment: [{id, text, resolve, fixed_in, fixed_at, lesson, rule}]. |
| resolve | boolean | – | As in replies. |
| rule | object | – | As in replies. |
| session | string | – | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| text | string | – | As in replies. |
No output schema declared.
No examples provided.
restore_post_version ~154
Put an old version back (into its variant if it still exists, else the main post). The current text is saved to history first.
| Name | Type | Req | Description |
|---|---|---|---|
| platform | string | – | Which post of the session: linkedin (default, posts/linkedin.md), x (posts/x.md), youtube (the long wide video: title + description, posts/youtube.md) or vertical (one vertical video and caption for… |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| version | string | yes | Version id from the history list. |
No output schema declared.
No examples provided.
restore_script_version ~73
Put an old version back (the current text is saved to history first).
| Name | Type | Req | Description |
|---|---|---|---|
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| version | string | yes | Version id from the history list. |
No output schema declared.
No examples provided.
rough_cut ~203
Make a first cut of the takes against script.md: each script line once (the last full try), without false starts, stutters, ums and pauses longer than gap. A take with a best cut uses only that range. Returns the clip (like cut_take) plus dropped (each with why) and missing (script lines no take has). Show the user the clip and tell them what you dropped and what is missing. It is only a first draft: improve it freely (edit cut and call cut_take; see cut_take for your own ffmpeg).
| Name | Type | Req | Description |
|---|---|---|---|
| gap | number | – | The longest pause kept, in seconds. Default 0.25. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
| takes | array | – | Take numbers in the order to use. Default: the keeper takes in session order, else all. |
No output schema declared.
No examples provided.
run_job ~209
Run slow work (a render, Demucs, Whisper, matting, any command over about 30 s) in Takes, never as a background Bash job or with sleep. Returns a job id at once. The job outlives the chat and Takes, and shows its progress in the session's Jobs row. cmd runs in zsh in the session folder. The result's note says how to wait.
| Name | Type | Req | Description |
|---|---|---|---|
| cmd | string | yes | The shell command. Print 'TAKES_PROGRESS 0.4' lines for a progress bar (ffmpeg and N% lines work too). |
| label | string | yes | A few words the user sees, e.g. Render edit v3. |
| outputs | array | yes | New files the job writes, relative to the session (paths from next_path). [] if none. |
| session | string | yes | Session as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move. |
No output schema declared.
No examples provided.
How do I install the Takes for Mac MCP server?
Takes for Mac ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, 20e105b74f466d1f85116b3564394342f928b80410cbabc76a6c27e3e55c67ef; the commands to do that are on this page. If it does not match, do not open it.
mcpb · takes-mcp.mcpb
Download bundleCheck the download matches the SHA-256 the MCP registry declares before you open it. If it does not match, do not open the file.
SHA-256
20e105b74f466d1f85116b3564394342f928b80410cbabc76a6c27e3e55c67ef
macOS / Linux
echo "20e105b74f466d1f85116b3564394342f928b80410cbabc76a6c27e3e55c67ef takes-mcp.mcpb" | shasum -a 256 -c
Windows (PowerShell)
(Get-FileHash -Algorithm SHA256 .\takes-mcp.mcpb).Hash -eq "20e105b74f466d1f85116b3564394342f928b80410cbabc76a6c27e3e55c67ef"
Run it in the folder you saved the bundle to, then open the file with an MCPB-capable host such as Claude Desktop.
What is the Takes for Mac MCP server?
Takes for Mac is an MCP server listed in the public MCP registry as io.github.marvtub/takes. Tools for the Takes Mac app: scripts, takes, edits and posts for talking-head videos. This page covers its MCPB bundle (https://github.com/marvtub/takes-public/releases/download/v2026.10.15/takes-mcp.mcpb).
Is the Takes for Mac MCP server safe to use?
Takes for Mac scores 40 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Takes for Mac MCP server expose?
Takes for Mac exposes 74 tools: list_projects, create_project, list_sessions, get_session, create_session, and 69 more. Their descriptions and schemas cost roughly 14,979 tokens of context every time the server is loaded.
What licence is the Takes for Mac MCP server under?
Takes for Mac declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.