A command palette for the agentic web — forked from cmdk with WebMCP primitives
Three tools with complete input schemas and clear descriptions. All parameters are typed with constraints (enums, min/max). Descriptions are concise (20-50 chars) but lack actionable context for LLM selection. No output schemas documented. Tool names follow verb_noun pattern but lack specificity about state changes. No error handling guidance. Schemas are well-formed JSON Schema with proper constraints, but descriptions do not explain WHEN to use each tool or what happens after invocation.
Play a genre on the speaker, or stop
Set living room brightness (0 = off)
Set the target temperature
Descriptions lack actionable context. 'Set living room brightness (0 = off)' does not explain WHEN to call this vs other lighting tools, or what side effects occur. LLMs need: what does it do, when to use it, what it returns.
No output schemas documented. Callers cannot know what fields are returned or plan downstream tool calls. Production tools must document return types.
No error handling guidance. If set_lights fails (e.g., device offline), the LLM has no recovery path. Descriptions should hint at failure modes and next steps.
Tool names do not indicate state-changing behavior. 'set_lights' is clear, but descriptions should explicitly state 'This modifies device state' so LLMs know the call is not idempotent and has side effects.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | <=2025-11-25 | v2 |
play_music enum includes 'off' as a genre, which is semantically odd. Consider renaming to 'action' or 'command' and clarifying that 'off' stops playback rather than playing a genre.