Scaffold a new MCP tool for DaVinci Resolve with the correct patterns, decorators, and registration.
Use this skill to create a new tool for the Celavii-Resolve MCP server.
Determine the domain — which file in src/celavii_resolve/tools/ does it belong to?
timeline.py — timeline operationsclips.py — clip manipulationcolor.py — color grading, nodes, LUTsmarkers.py — markersmedia.py — media pool, bins, importrender.py — render queue, presetsfusion.py — Fusion page, compositionsfairlight.py — Fairlight audiometadata.py — clip/timeline metadataproject.py — project settings, databasesplayback.py — playback, viewertrack.py — track managementcollaboration.py — cloud, remotelayout.py — UI pages, windowsscripting.py — execute Python/Luagallery.py — stills, PowerGradesUse this exact pattern:
@mcp.tool
@safe_resolve_call
def celavii_your_tool_name(param: str, optional: int = 1) -> str:
"""One-line description of what this tool does.
Args:
param: Description of required parameter.
optional: Description with default. Defaults to 1.
"""
resolve, project, media_pool = _boilerplate()
# ... Resolve API calls ...
return "Success: description of what happened"
Conventions to follow:
celavii_ (namespace)str always — never dicts or lists_boilerplate() for Resolve connectionitems = thing.GetList() or []_resolve_safe_dir() for temp paths, not tempfile.gettempdir()If creating a new module file, add the import to src/celavii_resolve/__init__.py:
from . import your_new_module # noqa: F401, E402
uv run ruff check src/ --fix && uv run ruff format src/ && uv run pytest tests/ -v