SwayWM MCP has critical definition gaps. Descriptions are minimal (10-20 chars), below the 50-200 char baseline for LLM-optimized tools. The 'execute' tool accepts arbitrary sway commands with no validation, constraint documentation, or error recovery guidance. No output schemas are documented. Tool names lack action verbs (e.g., 'workspaces' instead of 'list_workspaces'). No parameter descriptions exist for the 'command' parameter beyond a generic string note. Error handling in 'execute' returns raw error text instead of actionable recovery steps.
Execute a sway command
Get focused window
Get all input devices
Get all outputs
Get all windows
Get all workspaces
Tool names lack action verbs. 'workspaces', 'outputs', 'windows', 'inputs' should be 'list_workspaces', 'list_outputs', 'list_windows', 'list_inputs' to signal intent and match LLM conventions.
Descriptions are 10-20 characters, below the 50-200 char baseline. 'Get all workspaces' provides no context for when to call this tool vs. others, or what the output structure is.
'execute' tool accepts arbitrary sway commands with no validation, enum constraints, or documentation of valid command syntax. LLM will hallucinate invalid commands.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 27 | <=2025-11-25 | v2 |
Error handling in 'execute' returns raw error text ('Error executing command: ${error}') instead of actionable recovery guidance. LLM cannot determine if error is retryable or user-fixable.