Open-source migration, integration and automation tools for ALL WR - CLI, API and MCP.
Server has 11 tools with consistent naming (verb_noun pattern: list_, describe_, validate_, inspect_, generate_, migration_, apply_, resume_, cancel_). All tools have descriptions (avg ~120 chars, within baseline 34-392). Input schemas are present with typed parameters and descriptions. However, output schemas are NOT documented, responses are JSON strings without declared structure. Error handling returns structured error objects but lacks recovery guidance. Security model is well-documented in docstring but not reflected in tool annotations (destructiveHint, readOnlyHint missing). Risk classifications exist (READ_ONLY, WRITE, DESTRUCTIVE) but are not machine-readable tool metadata.
WRITE tool: apply a validated plan to the ALL WR target. Requires a plan generated beforehand; the plan hash and target are re-verified. A generic request to "migrate" is not approval: only call this after a human confirmed the exact plan.
WRITE tool: mark a run cancelled (state stays resumable).
Describe one connector's capabilities and limitations (read-only).
Generate a migration plan file (writes only the local plan file, never the target).
Show a plan's target, counts and warnings (read-only).
Summarize what a source contains (read-only, no target access).
Output schemas not documented. Tools return JSON strings (via _safe() helper) but LLMs cannot see the structure of 'connectors', 'metadata', 'capabilities', 'ok', 'error' fields. This forces LLMs to parse unstructured text and guess field names for downstream operations.
Tool annotations missing. Risk classifications (READ_ONLY, WRITE, DESTRUCTIVE) are documented in comments and docstrings but not exposed as machine-readable tool metadata (readOnlyHint, destructiveHint, idempotentHint). MCP clients cannot automatically gate dangerous tools or warn users.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
List the available source connectors (read-only).
Generate the report bundle for a run (writes local files only).
Status of a migration run from its state database (read-only).
WRITE tool: resume an interrupted run from its last checkpoint.
Validate a migration configuration file (read-only).
Error responses lack recovery guidance. _error() returns {ok: false, error: code, message: str} but does not suggest next steps. E.g., 'connector not found' should suggest 'Call list_connectors() to see available options.'
Parameter descriptions lack format/constraint details. E.g., 'config_path' and 'plan_path' accept strings but do not specify: must be absolute? relative? max length? file must exist? These constraints should be in descriptions per pattern:constrained-input.
Destructive operations (apply_plan, resume_migration) lack dry-run or confirmation step. Description of apply_plan mentions 'human confirmed the exact plan' but there is no tool-level confirmation mechanism (e.g., result with input_required for user approval).