MCP server for controlling a NOVA DIY Artificial Intelligence Robot by Creoqode
Server defines 7 tools with complete input schemas and descriptions. Naming follows verb_noun pattern (home, move, shift_to, roll_to, pitch_to, rotate_to, lift_to). Descriptions are domain-specific and explain motion control semantics (trapezoidal ramp-up/ramp-down). However, descriptions lack LLM-optimized guidance on WHEN to use each tool vs alternatives, and parameter descriptions are minimal. No output schema documentation visible. Error handling and recovery guidance absent. Tools are well-scoped (single responsibility) but lack composition hints.
send all servos to their home positions — pass within_ms for smooth, fluid motion with automatic velocity ramp-up and ramp-down; without within_ms the robot moves at constant maximum speed
lift head on secondary axis, range 20°–150° — s5; pass within_ms for smooth motion with trapezoidal velocity profile
set one or more servo positions atomically — at least one of shift_to, roll_to, pitch_to, rotate_to, lift_to is required; pass within_ms for smooth, fluid motion with automatic velocity ramp-up and ramp-down
pitch head up (>110°) or down (<110°) — s3; pass within_ms for smooth motion with trapezoidal velocity profile
roll head clockwise (>90°) or counter-clockwise (<90°) — s2; pass within_ms for smooth motion with trapezoidal velocity profile
rotate body around Z-axis — s4; pass within_ms for smooth motion with trapezoidal velocity profile
No output schema documentation. Tool responses are not documented, forcing LLMs to guess what fields are returned and preventing downstream tool chaining.
Descriptions lack LLM-optimized guidance on tool selection. Descriptions explain WHAT (motion control) but not WHEN to use each tool vs alternatives. E.g., when should an agent call 'move' vs individual 'shift_to'/'roll_to' calls?
No error handling or recovery guidance. Tools lack descriptions of failure modes (e.g., servo out of range, connection lost) and what the LLM should do next.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
shift head forward (>90°) or back (<90°) — s1; pass within_ms for smooth motion with trapezoidal velocity profile (ramp-up → constant speed → ramp-down)
Parameter constraints not documented in descriptions. Angle ranges (e.g., 'lift_to' range 20° - 150°) are mentioned in descriptions but not enforced or validated. No min/max bounds in schema.
No tool composition hints. 'move' accepts multiple servo targets atomically, but descriptions do not explain when to use 'move' (batch) vs sequential individual servo calls (latency/atomicity tradeoff).