Portable release and publish skills for DCC-MCP production workflows
Server provides 7 tools with complete input schemas and descriptions. Naming follows verb_noun convention (create_, finalize_, package_, run_, validate_). Descriptions are present (50-200 chars) and explain what each tool does. However, output schemas are not documented in the visible code, only input schemas are shown. Parameter descriptions are present but some lack detail on constraints (e.g., 'release_profile' enum values not listed in description). Error handling is minimal, no recovery guidance or actionable error messages visible. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear WRITE/READ_ONLY risk classifications. Composition is sound: tools are single-purpose and chainable (e.g., create_game_pv_capture_plan → finalize_game_pv_capture). Security concern: file paths are user-provided parameters with no visible sanitization against path traversal.
Create a request-scoped exact-window game PV capture plan.
Create a publish manifest for pipeline artifacts.
Verify and preserve exact-window game PV shot artifacts.
Create distribution artifacts from a prebuilt Windows game directory.
Launch and evaluate a prebuilt Windows game.
Evaluate an existing structured game runtime log.
Validate an existing publish manifest.
Output schemas not documented. Tools return complex objects (plan, plan_path, plan_sha256) but downstream tools and LLMs cannot see the structure. This breaks tool chaining and forces agents to guess field names.
Enum constraints not listed in parameter descriptions. 'release_profile' accepts 'installer|steam|wegame' but description only says 'Release profile: installer, steam, or wegame', not machine-parseable. 'engine' accepts 'unity|unreal|godot|custom_stdout' but constraint is buried in description text.
No tool annotations despite clear risk classifications. Tools marked WRITE (create_game_pv_capture_plan, finalize_game_pv_capture, package_prebuilt_game_release, run_game_runtime_acceptance, create_publish_manifest) should declare destructiveHint=true. READ_ONLY tools should declare readOnlyHint=true. Agents cannot distinguish safe from unsafe operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Path traversal vulnerability. Tools accept 'source_directory', 'evidence_directory', 'output_directory', 'plan_path' as user-provided strings with no visible sanitization. Code shows Path.expanduser().resolve() but no check for symlinks or parent directory escapes. Malicious input could read/write arbitrary files.
Error handling lacks recovery guidance. Code raises ValueError and FileNotFoundError but does not provide actionable next steps. E.g., 'request_id already exists with a different capture contract' tells agent nothing about how to recover, should suggest 'Use a new request_id or call finalize_game_pv_capture with the existing plan.'