An MCP server that executes parallel agentic code refactoring tasks, synthesizing diffs across multiple branches with AST correctness validation
Single tool 'execute_skill_action' has critical definition gaps. Input schema visible but severely incomplete: 'tasks' array lacks item schema (no type, description, or structure for individual task objects); 'codebase_root' is a string with minimal description. Tool description is 127 chars but vague, does not explain WHEN to use it, what 'parallel agentic' means, or what 'diff synthesis' produces. No output schema documented anywhere. No error handling guidance. No parameter constraints (enums, ranges, formats). The tool name uses 'and' (execute_skill_action) but actually combines multiple concerns: refactoring, diffing, AST validation, and parallel execution. No evidence of idempotency, retry safety, or destructive operation warnings despite WRITE risk classification.
Execute parallel agentic code refactoring tasks with diff synthesis and AST correctness validation
Input schema incomplete: 'tasks' array has no item schema. LLM cannot infer what structure each task object should have (is it a string? object with fields? what fields?). This violates pattern:constrained-input and forces LLMs to guess.
No output schema documented. Tool returns complex nested structure (refactor_results array with task_id, branch, files_modified, etc.) but LLM has no way to know what fields to expect or how to extract data for downstream calls.
Tool description (127 chars) is vague and lacks actionable context. Does not explain WHEN to call this vs other refactoring tools, what 'parallel agentic' means, what 'diff synthesis' produces, or what AST validation entails. Fails pattern:tool-description baseline of 194 chars average with clear WHAT/WHEN/RETURN.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 30 | 2026-07-28+ | v2 |
No error handling guidance. Tool is marked WRITE risk but has no documentation of failure modes, recovery steps, or whether operations are idempotent. LLM cannot determine if it should retry on failure or ask user.
Parameter 'tasks' lacks description. Is it a list of task names (strings)? Task objects with IDs and configs? Required or optional? LLM cannot infer intent from name alone.