pawlsa-mcp has 10 tools with basic naming and descriptions, but significant gaps in schema completeness, parameter documentation, and error handling. Tool names follow verb_noun convention (pw_link_create, mixer_set_volume), which is good. However, descriptions are minimal (10-50 chars), parameter descriptions lack detail on constraints/ranges, and output schemas are not documented. No error recovery guidance, no input validation hints, and no security/permission documentation. The server operates on system audio/PipeWire state with destructive operations (pw_link_destroy, mixer_set_switch) but lacks confirmation patterns or dry-run support.
Set switch state on an ALSA mixer element
Set volume on an ALSA mixer element
Play raw PCM audio data through an ALSA device
Play a WAV file through an ALSA device
Create a link between two PipeWire ports
Destroy a PipeWire link by ID
Set the active profile on a PipeWire device
Set a metadata property in PipeWire
Descriptions are too short (10-50 chars) and lack context on WHEN to use each tool, prerequisites, or what happens on success/failure. Baseline for A+ tools is 50-200 chars with clear intent guidance.
Parameter descriptions lack constraints, ranges, and valid values. E.g., 'volume' in mixer_set_volume has no range (0-100? 0-1?), 'channel' is optional but no guidance on valid names (front-left, front-right, mono?), 'sample_format' in play_pcm lists examples but no enum constraint.
Destructive operations (pw_link_destroy, mixer_set_switch) lack confirmation or dry-run patterns. No guidance on recovery if an agent accidentally destroys a critical audio link or mutes the wrong device.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | <=2025-11-25 | v2 |
Set mute state on a PipeWire node
Set volume on a PipeWire node
Output schemas are not documented. Callers cannot know what fields to expect from tool results, making it impossible to chain tools or extract required IDs for follow-up calls.
No error recovery guidance. Tool implementations return ErrorData but descriptions do not explain what errors are possible, whether they are retryable, or what the LLM should do next (e.g., 'If device not found, call pw_list_devices first').