Skip to main content
Glama

fcp-mcp

Let Claude (or any MCP client) edit in Final Cut Pro.

fcp-mcp is a Model Context Protocol server for Final Cut Pro on macOS. It can read your libraries, build timelines from your media, import them, read timelines back clip by clip, and drive the app (menus, shortcuts, dialogs, exports, screenshots). All of it runs locally on your Mac.

Tested with Final Cut Pro 12.3 ("Final Cut Pro Creator Studio") on macOS. Python 3.11+.

You:     "Cut the voiceover at these points, put a chapter marker on each section,
          and open it in Final Cut."
Claude:  builds the FCPXML → validates it against FCP's own DTD → imports it →
          checks the project arrived → "Done: 'VO clean', 3:09, 20 clips, 12 markers."

Why

Final Cut Pro has no editing API, and its AppleScript dictionary is read-only. fcp-mcp combines three channels into one set of tools:

Channel

What it does

Needs

AppleScript dictionary

Lists libraries, events, projects, durations and frame rates

Automation permission

FCPXML

Builds new timelines (clips, gaps, titles, connected B-roll and music, markers, compositing) and imports them; reads exported timelines back clip by clip

Nothing extra

UI scripting (System Events)

Clicks menus, presses shortcuts, reads and clicks dialogs, runs Export XML and Share, takes screenshots

Accessibility (and Screen Recording for screenshots)

Safe by design: an import always adds a new project and never changes an existing one. Every generated file is checked against the FCPXML DTD that ships inside Final Cut Pro before it is opened.


Related MCP server: fcp-mcp-server

Use cases

Use case

How it works

🎙️ Voiceover cleanup

Pair it with a transcriber (WhisperX, whisper.cpp). Claude finds the stumbles, repeats and long pauses, then builds a timeline of the kept ranges, as separate clips of your original file so every cut stays adjustable in FCP.

✂️ Rough cut from notes

"Intro clip from 0:02 for 5 s, title card, then the demo." You get an ordered primary storyline with titles and gaps in one call.

🎞️ B-roll and music layout

Connect B-roll above the storyline and music or VO below it, at exact times, with audio roles (dialogue, music, effects).

📍 Markers and chapters

Add chapter markers for YouTube, to-dos ("check colour"), or notes from a review, onto a new timeline or an exported one.

📱 Reformatting

Fit or fill 3:4 or 9:16 footage into 16:9 (or the reverse), with a background colour behind fitted clips.

🧩 Overlays and compositing

Crop, place, scale, rotate, opacity, blend modes and keyframes (with stepped "hold" keys). ProRes 4444 clips with alpha work as overlays.

🔍 Timeline review

Export a project's XML and read it back clip by clip (names, offsets, durations, lanes, markers), so the assistant can check an edit or report on it.

📤 Hands-off export

Trigger Share with the destination's current settings, and screenshot the viewer or timeline to see what's on screen.


Tools

Group

Tools

Status

fcp_status, fcp_launch

Library (read-only)

fcp_list_libraries, fcp_get_project

Media

media_probe (ffprobe: duration, fps, size, timecode, audio)

FCPXML

fcpxml_build_timeline, fcpxml_import, fcpxml_read, fcpxml_add_markers, fcpxml_validate

App control

fcp_menu_list, fcp_menu_click, fcp_press_keys, fcp_ui_snapshot, fcp_click_button, fcp_save_dialog, fcp_export_xml, fcp_share_export, fcp_screenshot

Times can be given as seconds (12.5), timecode ("00:00:12:15") or clock time ("0:12.5").

Example: fcpxml_build_timeline

{
  "project_name": "Promo v1",
  "primary": [
    {"path": "~/Footage/intro.mov", "source_in": 2, "duration": 5},
    {"text": "Chapter 2", "duration": 3, "style": {"color": "#FFCC00"}},
    {"path": "~/Footage/demo.mov"}
  ],
  "connected": [
    {"path": "~/Audio/music.wav", "at": 0, "lane": -1, "audio_role": "music"},
    {"path": "~/Footage/broll.mov", "at": "0:06", "lane": 1, "duration": 2, "tracks": "video"}
  ],
  "markers": [{"at": 8, "name": "Check colour", "kind": "todo"}]
}

Clips and titles also take conform (fit, fill or none) and adjust (crop, place, scale, rotation, opacity, blend mode, keyframes, and a per-property hold). Generated files go to ~/Movies/fcp-mcp/ unless you pass output_path.


Install

You need macOS, Final Cut Pro, uv and ffmpeg (brew install ffmpeg).

git clone https://github.com/abdulfatiraziz/fcp-mcp.git
cd fcp-mcp
uv sync
uv run pytest -q        # optional: 8 tests, no Final Cut needed

Claude Code

claude mcp add --scope user final-cut-pro -- uv run --directory /ABSOLUTE/PATH/TO/fcp-mcp fcp-mcp

Claude Desktop

Add this to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "final-cut-pro": {
      "command": "uv",
      "args": ["run", "--directory", "/ABSOLUTE/PATH/TO/fcp-mcp", "fcp-mcp"]
    }
  }
}

Any other MCP client that speaks stdio works the same way.

macOS permissions

Grant these to the app that runs the server (Claude, or your terminal) in System Settings › Privacy & Security:

  • Automation › Final Cut Pro and System Events: allow when macOS asks.

  • Accessibility: for the menu, keyboard, dialog, Export XML and Share tools. It also lets imports finish on their own (see below).

  • Screen & System Audio Recording: for fcp_screenshot.

Run fcp_status to see which of these are working.


How imports work

Final Cut Pro asks "Which library do you want to import … into?" for every FCPXML opened this way, even when the file names a library. With Accessibility on, the server answers the dialog itself:

  • The library is open: it picks that library.

  • It's a closed .fcpbundle: it opens the library first.

  • The path doesn't exist yet: it clicks New… and creates the library.

It then waits until the project shows up. Without Accessibility, you pick the library in the dialog yourself.


Known limits

  • When several libraries are open, pass library so the server knows which one to choose. Otherwise the dialog is left for you.

  • Reading a timeline needs an export first. Use fcp_export_xml (needs Accessibility) or File › Export XML, then fcpxml_read.

  • Export XML exports whatever has focus. By default fcp_export_xml presses ⌘2 so the project in the timeline is exported. Pass focus_timeline: false to export the browser selection instead.

  • fcp_share_export is not yet tested live. It renders with the destination's current settings.

  • UI tools depend on FCP's menu names and dialog layout. Names are matched loosely ("Export XML" also matches "Export XML…"). Use fcp_ui_snapshot to see what is on screen.

  • Titles use the built-in Basic Title. You can set the text, font, size, colour and alignment.


Development

uv sync
uv run pytest -q

The tests generate their own media with ffmpeg (into tests/media/, which git ignores) and validate every generated timeline against Final Cut's DTD.

License

MIT. Not affiliated with or endorsed by Apple. Final Cut Pro is a trademark of Apple Inc.

Available Tools

19 tools
fcp_click_buttonB
Destructive

Click a button in Final Cut Pro's open dialog (or front window).

NameRequiredDescriptionDefault
labelYesButton title, e.g. "Next", "Cancel", "Import", "OK".

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, so the safety warning is present. The description adds only the target-window context and does not disclose prerequisites such as a dialog needing to be open, potential irreversible consequences of clicking, or any confirmation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for a simple one-parameter UI action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter action with a fully described schema and destructive annotation, the core is present. However, it lacks differentiation from other UI tools and omits safe-use context that would help an agent invoke it correctly in complex automation flows.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single "label" parameter is already documented with examples like "Next", "Cancel", "Import", and "OK". The description adds no additional meaning beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ("Click") and resource ("button") for Final Cut Pro, with target context of the open dialog or front window. It is clear but does not distinguish this action from sibling UI tools such as fcp_menu_click or fcp_press_keys.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical "(or front window)" implies the tool is for interacting with an open dialog or active window, but there is no explicit when-to-use guidance, no when-not guidance, and no routing to alternative UI-automation siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcp_export_xmlA
Destructive

Export the open timeline (or browser selection) as FCPXML via File > Export XML, then read it.

NameRequiredDescriptionDefault
overwriteNo
read_afterNoParse the export and return its contents.
output_pathNoWhere to save. Default: ~/Movies/fcp-mcp/export-<time>.fcpxml
focus_timelineNoPress cmd+2 first so the project open in the timeline is exported (not the browser selection).

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and non-readOnly; the description adds that this is driven through a menu action in the UI, which is useful given the automation-based sibling set. However, it never explains what makes it destructive — e.g. that overwrite can clobber an existing file, or that it requires FCP to be frontmost — leaving the destructive flag unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence with the core action front-loaded and the mechanism trailing. No wasted words, though the single-sentence form forces the when/why guidance to be inferred.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, disk-writing UI-automation tool with no output schema, the description should at minimum flag the overwrite hazard and the FCP-foreground requirement. It covers the what and roughly the how, but leaves the risk profile under-explained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, and the description adds real meaning for two of the four params: '(or browser selection)' explains what focus_timeline toggles between, and 'then read it' ties to read_after. Overwrite and output_path are left to the schema, which is acceptable at this coverage level.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Export) and resource (open timeline / browser selection as FCPXML) plus the underlying mechanism (File > Export XML). It is distinguishable from fcpxml_read (which only reads) and fcpxml_build_timeline, though it doesn't explicitly disambiguate against fcp_share_export.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies when to use it (you need an FCPXML dump of the current timeline or browser selection) and the focus_timeline toggle hints at the timeline-vs-browser choice. But there is no explicit when-not, no mention of prerequisites (Final Cut must be running, a project open), and no routing to sibling alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcp_get_projectA
Read-only

Get a project's sequence details (duration, start, frame rate, timecode format).

To see clips, titles and markers inside it, open it in the timeline and use fcp_export_xml.

NameRequiredDescriptionDefault
nameYesProject name (exact).
eventNo
libraryNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered; the description adds the meaningful scoping fact that this returns sequence-level metadata only, not timeline contents. It does not mention whether Final Cut Pro must be running or what happens when the name is ambiguous, but with annotations and an output schema in place the bar is lower.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no waste, and the core capability is front-loaded before the routing hint. Every clause carries information the agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The existence of an output schema means return values need not be explained, and the read-only nature is covered by annotations. However, for a lookup tool with two undocumented scoping parameters (event, library), the description leaves a real ambiguity unresolved: whether a bare name is sufficient or whether the project must be disambiguated by library/event.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% — just 'name' is documented as exact-match, while 'event' and 'library' have no descriptions at all (default null). The description supplies no parameter guidance whatsoever, not even that event/library narrow the lookup when project names repeat across libraries. With low coverage the description was required to compensate and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('Get') plus resource ('project's sequence details') and an explicit enumeration of the returned fields (duration, start, frame rate, timecode format). The second sentence contrasts scope with fcp_export_xml, so an agent can distinguish it from the sibling without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states the boundary case: for clips, titles and markers, open the project in the timeline and use fcp_export_xml instead. That is an explicit alternative with a condition. It stops short of stating prerequisites (e.g., needing a library/event to disambiguate duplicate project names) or saying when not to use it at all.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcp_launchA

Open Final Cut Pro (or bring it forward) and wait until it responds.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds genuinely useful behavior beyond annotations: the call blocks ('wait until it responds') and is effectively idempotent via bring-forward. Annotations already declare non-readOnly, non-destructive, non-openWorld, so the remaining burden is low. It doesn't say what happens on timeout or if the app is not installed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the action and the completion condition front-loaded; every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the tool takes no parameters. The only gap is failure/timeout behavior, which is minor for a simple launch tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so per baseline this scores 4. The description correctly implies no configuration is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Open Final Cut Pro'), plus the alternate behavior (bring forward) and the completion condition. It is distinguishable from siblings like fcp_status because it launches rather than queries, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'or bring it forward' phrasing implies it is safe to call whether or not FCP is running, but there is no explicit guidance on when to prefer fcp_status first or what to do if launch fails. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcp_list_librariesA
Read-only

List open libraries with their events and projects.

NameRequiredDescriptionDefault
eventNoOnly this event (exact name).
detailsNoInclude each project's duration and frame rate (slower).
libraryNoOnly this library (exact name).

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish that this is a safe read-only operation with openWorldHint=false, so the description does not need to repeat safety claims. It adds useful scope by clarifying that results include events and projects, but it does not describe filtering behavior, performance implications of details, or how "open" libraries are determined.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words. It states the core action and scope immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a complete schema, an output schema, and read-only annotations, so the description does not need to explain return values or safety. It conveys the main inventory purpose and nested result shape, but it omits any mention of the optional library/event filters or the slower details behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the event, details, and library parameters thoroughly. The description adds only a high-level indication that events and projects are included, without explaining the optional filters beyond what the schema provides; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: "List open libraries" and further specifies that each result includes events and projects. This clearly distinguishes it from single-project tools such as fcp_get_project, though it does not explicitly name a sibling as an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "List open libraries with their events and projects" implies a discovery or inventory use case, but it does not state when to use this tool instead of alternatives like fcp_get_project or fcpxml_read. There are no exclusions or explicit guidance about prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcp_menu_clickB
Destructive

Click a Final Cut Pro menu item. Acts on the current selection, like a person clicking it.

NameRequiredDescriptionDefault
pathYesMenu path, e.g. ["File", "New", "Project"], ["Mark", "Markers", "Add Marker"]. "..." is optional.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The sentence "Acts on the current selection, like a person clicking it" is genuinely useful behavioral context: it makes clear that the tool does not target a specific item and that its effect depends on the existing selection. However, with destructiveHint=true already declared, the description adds no warning about which actions may be irreversible, and it does not mention focus or authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler, front-loading the verb and resource before the behavioral analogy. Every phrase carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with annotations and no output schema, this is mostly adequate: the selections semantics are covered. Missing are the link to fcp_menu_list for discovering valid paths and any warning tied to its destructive classification, which matters for a UI-automation click.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already documents the menu-path array with concrete examples such as ["File", "New", "Project"] and the optional "..." segment. The description adds nothing about path construction, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ("Click a Final Cut Pro menu item"), which tells an agent exactly what the tool does and distinguishes it implicitly from sibling tools that read state or press keys. It stops short of naming the closest alternative, fcp_menu_list, so the boundary is not fully sharp.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never states when to reach for this tool instead of fcp_press_keys, fcp_click_button, or fcp_menu_list, nor that the menu path normally comes from fcp_menu_list. It says nothing about preconditions, such as Final Cut Pro being launched or focused.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcp_menu_listA
Read-only

List Final Cut Pro menu items with enabled state and keyboard shortcuts.

NameRequiredDescriptionDefault
pathNoOmit for the menu bar, ["File"] for a menu, ["File", "Share"] for a submenu.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds non-obvious value by disclosing what the result contains — per-item enabled state and keyboard shortcuts — which tells the agent it can pre-check availability before acting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; verb and object come first. It is efficient but leaves no room for the routing hint that would make it more useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

One optional parameter, no output schema, and the description covers the return shape (enabled state, shortcuts) that the schema cannot. Only the relationship to fcp_menu_click is missing, which is a minor gap for a low-complexity read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the path parameter is fully explained there (omit for menu bar, ["File"] for a menu, ["File","Share"] for a submenu). The description adds nothing about the path argument, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (Final Cut Pro menu items) and names the payload fields (enabled state, keyboard shortcuts). It does not distinguish itself from the obvious sibling fcp_menu_click, so an agent must infer the read-vs-act split.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no mention of fcp_menu_click as the alternative for invoking what is listed, and no note on whether a UI snapshot must exist first. The agent gets only implied usage from the verb 'List'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcp_press_keysB
Destructive

Press a keyboard shortcut in Final Cut Pro (it is brought to the front first).

NameRequiredDescriptionDefault
comboYesShortcut like "space", "cmd+b", "shift+z", "left", "m", "cmd+2" (focus timeline).
repeatNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, and the description adds genuinely useful context that the app is focused/brought forward first. However, it never explains the destructiveness risk of sending arbitrary keystrokes (e.g., cmd+z, delete) or what happens on failure, leaving the most important behavioral trait unaddressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with the key fact front-loaded and no filler. Appropriate size for the tool, though the parenthetical about focus could be integrated more cleanly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the annotations carry the safety profile. Still, for a destructive keystroke-injection tool the description omits failure modes, repeat semantics, and risk of unintended shortcuts — gaps an agent should not have to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: 'combo' is well documented with examples, but 'repeat' (1-100) has no description anywhere. The tool description adds nothing about either parameter, so it fails to compensate for the undocumented repeat multiplier, which meaningfully changes behavior and risk.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Press a keyboard shortcut in Final Cut Pro'), which is clearly distinct from siblings like fcp_menu_click or fcp_click_button. It also discloses that FCP is brought to the front, a detail not evident from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the verb — an agent can infer this is for keyboard shortcuts versus menu or button clicking — but nothing explicitly states when to prefer it over fcp_menu_click or fcp_click_button, nor any prerequisites (e.g., FCP must be running).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcp_save_dialogB
Destructive

Fill in Final Cut Pro's open save dialog with a folder and file name, then confirm.

NameRequiredDescriptionDefault
buttonNoConfirm button.Save
overwriteNo
output_pathYesFull path to save to (folder must exist).

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and readOnlyHint=false, so the safety profile is already known, but the description adds nothing about the destructive behavior itself. Critically, the overwrite parameter — the thing that determines whether an existing file is clobbered — is never explained anywhere, and failure modes (folder must exist) appear only in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the resource and ending on the confirmation step. Nothing is wasted or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive file-writing tool with no output schema, the description omits what happens on success or failure, whether the dialog is dismissed, and how overwrite changes behavior. An agent could invoke it and unknowingly overwrite an existing file.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, with button and output_path documented but overwrite left completely bare. The description's 'folder and file name' merely restates the output_path schema text and gives no meaning to overwrite or button, so it does not compensate for the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb chain (fill in, then confirm) against a concrete resource (Final Cut Pro's open save dialog), so an agent knows this drives a native UI dialog rather than an export API like fcp_share_export or fcp_export_xml. It stops short of naming a sibling or stating the precondition that the dialog must already be open, which keeps it off a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'Final Cut Pro's open save dialog' hints the dialog must already exist, but there is no explicit when-to-use, no when-not, and no named alternative such as fcp_share_export or fcp_click_button. An agent must infer the prerequisite from the phrasing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcp_screenshotB
Read-only

Take a screenshot of Final Cut Pro so you can see the viewer, timeline or a dialog.

NameRequiredDescriptionDefault
window_onlyNoCapture just FCP's front window (else the main display).

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered and the description needn't repeat it. It adds that the capture targets FCP's visual surface, but says nothing about the return form (inline image vs. file path), size/resolution, or failure behavior when FCP isn't running.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight sentence with the purpose front-loaded and zero filler. Slightly clipped given that a screenshot tool's output form is the key operational detail an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description is the only place to state what comes back — it implies a viewable image but never confirms format or whether it is returned inline. For a minimal one-parameter read tool that is adequate, but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter window_only already documents 'capture just FCP's front window (else the main display)'. The description mentions neither window_only nor its default, so it adds nothing beyond the schema — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource (screenshot of Final Cut Pro) plus what it visually captures — viewer, timeline, dialog. Clear without opening the schema, but it never distinguishes itself from the sibling fcp_ui_snapshot, which plausibly overlaps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied through the 'so you can see…' rationale; there is no explicit when-to-use statement, no mention of when to prefer fcp_ui_snapshot or fcp_menu_list, and no stated prerequisites (e.g. FCP must be running/frontmost).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcp_share_exportB
Destructive

Render the open timeline via File > Share using that destination's current settings.

Rendering runs in the background in FCP; this returns once the export has started.

NameRequiredDescriptionDefault
overwriteNo
destinationNoShare destination as named under File > Share, e.g. "Export File", "Apple Devices 1080p".Export File
output_pathYesWhere to save the render, e.g. ~/Movies/out.mov (extension optional).
focus_timelineNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds genuinely non-schema information: rendering happens in the background and the call returns as soon as the export starts, so agents know not to expect a finished file. However, annotations already flag destructiveHint=true and the description never explains the destruction surface (existing files at output_path, the overwrite flag) or failure modes, which is the highest-value context for a mutating tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core action front-loaded and the async caveat immediately after; nothing is padded. It could be slightly more efficient by merging the File > Share menu path repetition, but the structure serves the reader.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully clarifies the return semantics (returns once the export has started). Still missing for a destructive, 4-parameter tool: what overwrite does, what focus_timeline controls, and whether the export is safe to call when a destination isn't installed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: destination and output_path are documented in-schema, while overwrite and focus_timeline have no description anywhere. The phrase 'using that destination's current settings' adds real meaning by telling the agent encoding settings come from the destination rather than parameters, but overwrite (the destructive switch) and focus_timeline remain unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: render the open timeline via File > Share using the destination's current settings. An agent can distinguish it from fcp_export_xml (XML interchange) by the 'Share destination render' framing, though it never explicitly names that sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to prefer this over fcp_export_xml or fcp_save_dialog, and no exclusions or prerequisites (e.g. whether FCP must be running, whether a timeline must be focused). The only usable signal is the async note, which is about behavior rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcp_statusA
Read-only

Check Final Cut Pro, permissions and helpers. Call this first when something fails.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is consistent with the readOnlyHint/openWorldHint annotations and adds the diagnostic framing (permissions, helpers) that annotations don't convey. It does not say what the check reports back or what a failure result looks like, and with no output schema that gap matters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the diagnostic scope first and the invocation trigger second – well front-loaded and free of padding. Slight deduction because "permissions and helpers" is vague filler rather than informative phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description carries the burden of explaining what a status check reveals, and it only gestures at categories (FCP, permissions, helpers). An agent knows when to call it but not what it will learn or how to interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a verb ("check") and a resource ("Final Cut Pro, permissions and helpers"), so an agent can tell this is a diagnostic/status tool rather than a media or project operation. But "helpers" is unexplained jargon and the objects being checked are listed vaguely, so the precise purpose is only implied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Call this first when something fails" is explicit, actionable guidance on when to invoke the tool, which is unusually good for a status endpoint. It stops short of naming what to do next or which sibling to fall back on for specific failures, but the trigger condition is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcp_ui_snapshotB
Read-only

Describe the UI of the open dialog or front window (buttons, fields, values) as a tree.

NameRequiredDescriptionDefault
depthNo
windowNoWindow name. Default: the open dialog, else the front window.
max_nodesNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safe read-only profile is covered. The description adds that the return is a structured tree of UI elements, which is useful context, but says nothing about truncation behavior from depth/max_nodes limits or what happens when no window is found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that names the verb, resource, and returned form with zero filler. Nothing in it is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param, no-output-schema read tool, the definition covers the core purpose but leaves return-structure and truncation semantics undocumented. It is minimally adequate but leaves the agent guessing about depth/max_nodes effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% — the 'window' parameter is documented in-schema and the description's 'open dialog or front window' echoes it, but 'depth' and 'max_nodes' (with truncation implications) get no explanation in either structured fields or description. The description does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Describe') and a precise resource ('UI of the open dialog or front window... as a tree') with examples of what it reports (buttons, fields, values). This distinguishes it from visual siblings like fcp_screenshot, though it doesn't name any sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'open dialog or front window' implies the inspection context, but there is no explicit when-to-use or when-to-prefer-alternatives guidance versus fcp_screenshot, fcp_menu_list, or fcp_status. Usage must be inferred from the resource named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcpxml_add_markersB

Add markers, to-dos or chapter markers to a project in an FCPXML file and save a new file.

NameRequiredDescriptionDefault
pathYesSource .fcpxml/.fcpxmld (e.g. from fcp_export_xml).
libraryNoName of an open library, or path to a .fcpbundle (opened if closed, created if missing). Default: the open library when exactly one is open.
markersYes
output_pathNoDefault: next to the source, '<name> markers.fcpxml'.
project_nameNoNeeded if the file has several projects.
import_into_fcpNoImport the result. FCP adds it as a new copy of the project.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare a non-read-only but non-destructive write, and the description's 'save a new file' is consistent with destructiveHint=false and adds the useful detail that the source XML is not overwritten. However, it says nothing about whether Final Cut Pro must be running, what happens when import_into_fcp creates a duplicate project, or about failure modes on invalid timecode.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence, front-loaded with the action and resource. Efficient, though the terse single clause leaves no room to front-load the non-obvious 'new file' semantics before the object.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter, file-transforming tool with no output schema and moderate schema coverage, the description covers the core action but omits the file-based workflow context (source XML in, new XML out, optional re-import into FCP) that an agent needs to chain it correctly after an export.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 83%, so titles, defaults and descriptions already document path, library, output_path, project_name, and the MarkerSpec fields. The description adds no meaning beyond that — it does not even mention that markers is a list accepting mixed kinds or how 'at' is interpreted within the project timeline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (add) plus resource (markers/to-dos/chapter markers) and the object it mutates (a project in an FCPXML file), plus the key outcome 'save a new file'. It is clear what the tool does, though it never contrasts itself with sibling file-level tools such as fcpxml_build_timeline or fcpxml_import.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no prerequisites, and no alternatives. An agent must infer from the schema that the input comes from fcp_export_xml and must guess whether to use this versus fcpxml_build_timeline or fcpxml_import.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcpxml_build_timelineA

Create a new FCP project from media files, titles and markers, as FCPXML, and import it.

Example primary: [{"path": "/clips/a.mov", "source_in": 2, "duration": 5}, {"text": "Chapter 2", "duration": 3}, {"path": "/clips/b.mov"}]. Example connected: [{"path": "/music.mp3", "at": 0, "lane": -1}].

NameRequiredDescriptionDefault
fpsNoFrame rate, e.g. 25, 29.97, 30. Defaults to the first video clip's.
widthNoFrame width. Defaults to the first video clip's.
heightNoFrame height. Defaults to the first video clip's.
libraryNoName of an open library, or path to a .fcpbundle (opened if closed, created if missing). Default: the open library when exactly one is open.
markersNoMarkers, to-dos and chapter markers.
primaryYesPrimary storyline in order: media clips, gaps (duration only) and titles (text).
connectedNoClips/titles connected at a timeline position: B-roll and titles above, music/VO below.
backgroundNoHex colour behind clips that don't fill the frame (e.g. "#FFFFFF" around vertical footage fitted into 16:9). Ends where a trailing gap/end card starts.
event_nameNoEvent to put the project in (created if missing).fcp-mcp
output_pathNoWhere to save the .fcpxml. Default: ~/Movies/fcp-mcp/<project>.fcpxml
project_nameYesName of the new project.
start_timecodeNoTimeline start, e.g. "01:00:00:00". Default 0.
import_into_fcpNoOpen the file in Final Cut Pro after writing it.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=false, consistent with 'create a new project' and 'import it' — no contradiction. The description adds that an .fcpxml is written to disk and opened in FCP, which is useful context, but it is silent on what happens if a project of that name already exists, whether the write overwrites output_path, or what occurs when no library is open.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One purpose sentence followed by two labeled examples, with no filler. The core action is front-loaded before the illustrative payloads.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter tool that mutates disk and drives a desktop app, the description covers intent and item shapes but omits collision/overwrite behavior, the FCP-must-be-running prerequisite, and any failure modes. The rich per-parameter schema carries most of the load, but the description leaves gaps around side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the two worked examples go beyond the schema by showing how StoryItem and ConnectedItem compose into a real timeline (source_in + duration on the primary, at + lane -1 for music underneath). They clarify ordering and lane semantics in a way the JSON schema alone does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource chain: create an FCP project, serialize it as FCPXML, and import it. That distinguishes it in substance from fcpxml_import (which takes an existing file), but the description never names the sibling, so the agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the examples of primary and connected item shapes, which show what this tool is for. However, there is no explicit when-to-use guidance versus fcpxml_import, fcpxml_validate, or fcpxml_add_markers, and no stated prerequisite that FCP be running.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcpxml_importA

Import an FCPXML file or bundle into Final Cut Pro. Projects are added; nothing is overwritten.

NameRequiredDescriptionDefault
pathYes.fcpxml file or .fcpxmld bundle.
libraryNoName of an open library, or path to a .fcpbundle (opened if closed, created if missing). Default: the open library when exactly one is open.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond the annotations: imports are additive, projects are added, and nothing is overwritten. It does not state prerequisites such as whether FCP must already be running, which would be the remaining useful detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero waste. The primary action is front-loaded, and the non-destructive guarantee follows immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter import tool with fully documented parameters and annotations covering safety, the description is largely complete: it explains what the tool does and confirms the operation is additive. It could be slightly stronger by noting whether Final Cut Pro must be running or by pointing to validation as a prerequisite, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains that path is a .fcpxml file or .fcpxmld bundle and documents library defaults. The description adds no parameter-level detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Import) and resource (FCPXML file or bundle) plus the target application (Final Cut Pro), and it distinguishes itself from siblings like fcpxml_read, fcpxml_validate, and fcpxml_build_timeline by describing an actual import into FCP.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied — an agent should call this when it has an FCPXML to bring into Final Cut Pro — but there is no explicit when-to-use/when-not guidance and no reference to alternatives such as fcpxml_validate before importing or fcpxml_read for inspection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcpxml_readB
Read-only

Summarise an FCPXML: projects, every clip/title/gap with timeline position and lane, markers, media.

NameRequiredDescriptionDefault
pathYes.fcpxml file or .fcpxmld bundle.
max_itemsNoCap on timeline items listed per project.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety and locality are covered structurally. The description adds the useful fact that this is a summary/extraction of a file's contents rather than a mutation. However, it promises 'every clip' while the schema defaults max_items to 400, and it says nothing about how truncation, missing media, or malformed XML are reported.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the resource and then lists the returned sections, with no filler. It could be tightened slightly by splitting the enumeration, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the right thing by enumerating the returned sections, which is the main completeness requirement here. Still missing: what a caller gets when the file is invalid or partially truncated, and how this differs from adjacent inspection tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, including the .fcpxmld bundle alternative and the max_items cap semantics, so the description is not required to carry parameter detail. It mentions none of it, and the word 'every' arguably undercuts the max_items behavior documented only in the schema. Baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (summarise) and resource (an FCPXML) and enumerates exactly what the summary contains: projects, clips/titles/gaps with timeline position and lane, markers, media. That is concrete enough for an agent to know what comes back. It never distinguishes itself from siblings such as fcp_get_project (live app) or fcpxml_validate (checks the same file), so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to choose this over fcp_get_project for inspecting a project, or over fcpxml_validate for checking an XML. An agent must infer 'this reads a file on disk, not the running app' purely from the name prefix. No prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fcpxml_validateA
Read-only

Check an FCPXML file against the DTD bundled with the installed Final Cut Pro.

NameRequiredDescriptionDefault
pathYes.fcpxml file or .fcpxmld bundle.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds real value by specifying that validation is against the DTD bundled with the installed Final Cut Pro, which tells the agent the check is local and version-dependent rather than against a fixed online schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence with no filler, and the key differentiator (which DTD) is front-loaded. It is appropriately sized, though it leaves little room for the usage guidance an agent would benefit from.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with full schema coverage and no output schema, the description covers the essentials but omits what happens on failure — whether errors are returned as messages, line numbers, or a boolean. That reporting behavior is the main thing an agent needs and would have to discover by calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With one parameter at 100% schema description coverage, the schema already explains that 'path' accepts a .fcpxml file or .fcpxmld bundle. The description adds nothing about the path beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Check an FCPXML file') plus the validation reference (the DTD bundled with the installed Final Cut Pro), which makes it clearly distinct from sibling tools like fcpxml_read, fcpxml_import, and fcpxml_build_timeline. No sibling is named explicitly, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Use case is implied — you'd validate before reading or importing an FCPXML — but the description never says when to call this versus fcpxml_read or fcpxml_import, nor any preconditions. No explicit exclusions or alternatives are offered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

media_probeB
Read-only

Inspect media files: duration, resolution, frame rate, timecode, audio.

NameRequiredDescriptionDefault
pathsYesMedia files to inspect.

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that this is a metadata-extraction operation over listed attributes, but says nothing about behavior on missing/unsupported files or whether paths must be local — useful context that is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence naming the verb first and then the value list. No filler, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is unnecessary, and the description names the fields an agent would care about. Minor gaps remain around accepted file types and failure behavior, but for a one-parameter read-only probe this is nearly sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema description coverage is 100%, so the schema already documents 'paths' as 'Media files to inspect.' The description's phrase 'media files' mirrors the schema without adding format, count, or local-path semantics beyond it, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('inspect') and resource ('media files') and enumerates the returned attributes (duration, resolution, frame rate, timecode, audio), which is concrete and distinguishable from the FCP editing/UI siblings. It does not explicitly name or contrast with any sibling, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisite (e.g. files must be locally accessible), and no mention of alternatives or follow-up tools such as fcpxml_read or fcp_get_project. The agent must infer the call context entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 19 tool updatesv0.1.0
    • First observedfcp_click_button
    • First observedfcp_export_xml
    • First observedfcp_get_project
    • First observedfcp_launch
    • First observedfcp_list_libraries
    • First observedfcp_menu_click
    • First observedfcp_menu_list
    • First observedfcp_press_keys
    • First observedfcp_save_dialog
    • First observedfcp_screenshot
    • First observedfcp_share_export
    • First observedfcp_status
    • First observedfcp_ui_snapshot
    • First observedfcpxml_add_markers
    • First observedfcpxml_build_timeline
    • First observedfcpxml_import
    • First observedfcpxml_read
    • First observedfcpxml_validate
    • First observedmedia_probe

TDQS

B3.4/5.0

Scored across 19 tools

Disambiguation4/5

Most tools target clearly different actions/resources: live app control, FCPXML file operations, media inspection, and UI automation. There is some potential confusion between fcpxml_read, fcp_get_project, and fcp_export_xml, and between menu/button/keyboard UI tools, but descriptions clarify the boundaries well enough.

Naming Consistency3/5

Names use recognizable domain prefixes (fcp_, fcpxml_, media_) which aids grouping, but the conventions are mixed: some are verb_noun (fcp_list_libraries), others are noun_first (fcp_menu_list, fcp_ui_snapshot, fcp_screenshot, fcp_status). It remains readable but not a single predictable pattern.

Tool Count4/5

At 19 tools the set is somewhat heavy, but the scope is broad—live FCP control, FCPXML authoring/validation, media probing, UI automation, and export—so most tools earn their place. It is slightly over the typical 3–15 range but not excessive for the domain.

Completeness3/5

The surface covers creation via fcpxml_build_timeline, reading/exporting, validation, markers, import, and app/UI control. However, there are notable gaps: no explicit delete/remove operations, no direct editing of existing timeline clips, and limited library/event/project management beyond listing and getting.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables Claude and other MCP clients to read, edit, generate, and validate Final Cut Pro XML timelines with operations for trims, splits, markers, roles, transcripts, keyframes, speed curves, and cross-NLE export, plus pushing edits into a running Final Cut Pro.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables Claude and other MCP clients to read, edit, and generate real Final Cut Pro timelines from FCPXML, including cut detection, markers, roles, silence removal, transcript-based editing, cross-NLE export, and pushing changes into a running Final Cut Pro. Every write is journaled and undoable, with validation and safety checks for reliable timeline edits.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables Claude and other MCP clients to read, edit, and generate real Final Cut Pro timelines from exported FCPXML: cut detection, silence and flash-frame removal, markers from transcripts and beats, role assignment, rough cuts, keyframes, speed ramps, and cross-NLE export, with every write journaled, hash-verified, and undoable. It can also push a generated timeline straight into a running Final Cut Pro via Apple's Open Document event, so edits can be reviewed and re-imported without manual XML handling.
    -