Static source inference · medium confidence · detected: Logging
Deprecated protocol patterns detected
Summary
The Adobe Premiere Pro MCP server has 47 tools with basic definitions but significant quality gaps. While tool naming follows the verb_noun pattern (get_, list_, create_, etc.), descriptions are minimal (most 50-150 chars), parameters lack type specifications and descriptions in the visible schema, and output schemas are not documented. The server uses a generated tool list from live-tool-sweep.mjs rather than explicit registration with full schemas. Many tools expose IDs without resolving human-friendly identifiers, and error handling is not evident in the tool definitions. The codebase references a bridge architecture (PremiereProBridge, PremiereProTools) but the actual implementation schemas are not visible in the provided source.
Input schemas are incomplete or missing for most tools. Tools show parameter names and basic types (string, number, boolean, array) but lack proper JSON Schema definitions with 'required', 'minLength', 'maxLength', 'enum', 'pattern', or 'minimum'/'maximum' constraints.
Expand all tool descriptions to 100-200 characters, following the pattern: '[ACTION] [TARGET]. Returns [KEY_FIELDS]. Use this when [CONDITION]. Requires [PREREQUISITES].' Example: 'Create a new video sequence. Returns sequenceId. Use after importing media. Requires an open project.'
Add parameter descriptions for ALL parameters. For each parameter, document: what it controls, valid range/enum values, required format, and any constraints. Example for 'trackIndex': 'Track index (0-based; 0=topmost video track, -1=first available audio track).'
Add explicit input/output schemas in JSON Schema format with 'required', 'type', 'description', 'enum', 'minimum', 'maximum', 'pattern' constraints. Example: {'sequenceId': {'type': 'string', 'description': 'Unique ID of the target sequence (obtain from list_sequences)'}, 'trackIndex': {'type': 'integer', 'description': 'Track position (0-based)', 'minimum': -1, 'maximum': 50}}
For list tools (list_project_items, list_sequences, list_markers, etc.), add pagination parameters: 'limit' (1-100, default 20) and 'offset' (default 0). Return a structure like {items: [...], total: N, hasMore: boolean}.
Split multi-action tools into focused single-action tools: 'build_motion_graphics_demo' → keep as-is; 'build_brand_spot_from_mogrt_and_assets' → split into 'import_mogrt' + 'assemble_brand_spot'; 'copy_effects_between_clips' + 'copy_effect_values' → merge into 'copy_clip_effects' with a mode parameter.
Add human-friendly identifier support: tools that accept sequenceId should also accept sequenceName. Example: 'set_active_sequence(sequenceId: string | undefined, sequenceName: string | undefined) - if both undefined, use the currently active sequence. If only name provided, resolve it via list_sequences().'
Spec posture evidence
Inferred effective spec: 2025-06-18+.
Relies on Logging (deprecated) - log to stderr or use OpenTelemetry
Parameter descriptions are missing. While parameters have names and inferred types (sequenceId:string, trackIndex:number, etc.), most lack explicit descriptions explaining what the parameter controls, valid ranges, or format constraints.
Tool descriptions are minimal and often generic. Most descriptions are 35-50 characters (e.g., 'Create a new sequence in the project'). Descriptions lack WHEN to use the tool, what it returns, and dependencies (e.g., 'Does this require an active project?' 'What sequence presets are available?'). This forces LLMs to guess at tool selection logic.
No documented output schemas. The tools are listed with descriptions and input parameters, but no output schema is visible. LLMs need to know what fields to expect.' Without output schemas, agents cannot plan downstream tool calls or validate whether returned fields contain IDs they need for follow-up actions.
No confirmation or dry-run pattern for destructive operations. Tools like 'remove_selected_clips', 'delete_preview_files', and 'consolidate_and_transfer' modify state without a confirmation step.
Tool definitions are generated/inferred from live-tool-sweep.mjs rather than explicitly registered with full schemas. The provided schema shows tool names and basic parameter types, but actual MCP server registration code (showing tool.registerTool() or equivalent with complete Input/Output schemas) is not visible. Per hard scoring rule: 'If you are inferring tool existence (not seeing explicit registration): cap that tool's overall at 50.'
No pagination or result-limiting documented for list tools. Tools like 'list_project_items', 'list_sequences', 'list_markers', and 'list_available_effects' have empty input schemas ({}), which means no pagination parameters.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible in schema. Per current MCP spec (2026-07-28) and rubric Spec Alignment: tool annotations help agents understand which calls are safe, which modify state, and which can be retried. The risk column (READ_ONLY, WRITE, DESTRUCTIVE, REVERSIBLE) suggests these exist but are not in the MCP tool definitions.
all 47 tools
Add error handling guidance to descriptions. Example for 'set_playhead_position': 'If sequence not found, call get_active_sequence() or list_sequences() first. If time exceeds sequence duration, it is clamped to the sequence end.'
Add dry-run/preview modes for destructive tools. Example: 'remove_selected_clips(dry_run: boolean = false)' - when dry_run=true, returns what WOULD be deleted without actually removing.
Implement tool annotations in the MCP server. Register tools with 'readOnlyHint': true for read-only operations and 'destructiveHint': true for delete/remove operations. This signals agents to plan carefully.
Document output schemas for all tools with example return structures. Example for get_project_info: {projectId: string, projectName: string, framerate: number, resolution: {width: number, height: number}, duration: number}.
Add dependency hints to related tools. Example: 'add_to_timeline' description should note: 'First call list_sequences() to obtain sequenceId, and import_media() to obtain projectItemId.'
Review live-tool-sweep.mjs and the bridge implementation to ensure complete, explicit tool registration with full JSON Schema. Generate an mdcp.json or similar config file that lists all tools with complete definitions.
Add enum constraints for status/style parameters. Example for 'assemble_product_spot(motionStyle: enum)' - document valid values: 'fade', 'slide', 'zoom', 'pan' instead of free-form strings.
Audit tools for idempotency. For non-idempotent tools (e.g., those that generate unique IDs or involve random assets), add descriptions clarifying behavior on retry. Consider adding idempotencyKey parameters.
Consider adding a 'preview' or 'status' tool that returns current editor state (active sequence, selected clips, playhead position) to help agents understand context before making modifications.