VRoid Studio brute-force automation via pywinauto-mcp — 55 archetypes, state machine, verification.
Single tool 'vroid_studio' has a descriptive name but suffers from critical design flaws. The tool conflates 15+ distinct operations (status, launch, focus, screenshot, list_shortcuts, list_archetypes, run_archetype, run_template, open_project, save_project, save_project_as, open_and_export, list_templates, quick_gal_export, list_outputs, session_status) into one parameter-driven dispatcher. This violates the single-responsibility principle and forces LLMs to reason about which operation to invoke rather than selecting a tool by intent. The description is adequate (97 chars) but generic. Parameters lack enums for the 'operation' field despite 16 known values, inviting hallucinated operations. Most parameters have descriptions but lack type constraints (e.g., 'archetype_id' defaults to 'quick_gal' with no enum of valid archetypes). Output schema is not documented, callers cannot predict response structure. Error handling is absent from the visible code.
VRoid Studio portmanteau — pywinauto brute-force with 55 archetypes.
Single tool with 16 operations violates single-responsibility principle. Should split into separate tools: launch_vroid_studio, focus_vroid_studio, screenshot_vroid_studio, list_archetypes, run_archetype, etc. LLMs cannot infer intent from a generic 'operation' parameter.
'operation' parameter accepts 16 known values but is defined as free-form string with no enum constraint. LLMs will hallucinate invalid operations like 'list_all_archetypes' or 'export_model'. Must declare enum: ['status', 'launch', 'focus', 'screenshot', 'list_shortcuts', 'list_archetypes', 'run_archetype', 'run_template', 'open_project', 'save_project', 'save_project_as', 'open_and_export', 'list_templates', 'quick_gal_export', 'list_outputs', 'session_status'].
Output schema is not documented. Callers cannot predict response structure. Different operations return different fields (e.g., 'status' returns {success, running, handle, outputs, archetype_count} but 'run_archetype' likely returns {success, session_id, steps_completed}). Must document per-operation response schemas or split into separate tools with explicit return types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
Parameters 'archetype_id' and 'template_name' lack enum constraints despite referencing a fixed set of 55 archetypes and known templates. Default 'archetype_id=quick_gal' suggests a known set but no validation is visible. Must enumerate valid values or provide a discovery tool (list_archetypes, list_templates) that agents must call first.
No error handling guidance visible. If an operation fails (e.g., VRoid Studio not running, invalid archetype_id, file not found), the tool provides no recovery hints. Error responses must tell LLMs what to do next: 'VRoid Studio not running. Call launch_vroid_studio() first.' or 'Invalid archetype_id. Call list_archetypes() to see available options.'