FastAPI-based robotics vision server for 3D scene reconstruction, path planning, and robot control with WebSocket support for real-time Three.js visualization and Gemini Vision integration
Server has 10 tools with basic schemas and descriptions, but significant quality gaps. Most tool descriptions are 20-80 chars (below the 194-char baseline for A+ tools). Parameter descriptions exist but are minimal. No error handling guidance, no output schema documentation, no tool annotations. Tool names lack consistent verb-noun patterns (saveSplat, startMCP, currPosRot are non-standard). No pagination support for list operations. Security concerns: no mention of permission gates or audit trails. Composition issues: tools like updatePosition, updateRotation, updateCamera operate on shared state without idempotency guarantees or confirmation patterns for destructive ops.
Get the current position and rotation of the robot from the latest pose
Detect waypoints and obstacles from a top-down image using Gemini Vision
Get the latest activity log entry
Save a 3D environment/splat configuration to the database
Start an MCP session for a given environment, creating a trajectory
Trace a path from a start point to a destination using A* pathfinding with Gemini Vision for obstacle detection
Get a trajectory by ID with all its poses
Update the zoom level of the camera in the 3D scene and log the activity
Tool names lack consistent verb-noun pattern. 'saveSplat', 'currPosRot', 'startMCP' are non-standard; should be 'save_splat', 'get_current_position_rotation', 'start_mcp_session'. LLMs struggle to infer intent from camelCase abbreviations.
No output schema documentation. Tools return Pydantic models (DepthResult, PathDetectionResult, PoseResponse, etc.) but LLM has no visibility into response structure. Cannot plan downstream tool calls or extract required fields.
No error handling guidance. Tools return HTTPException with generic status codes (404, etc.) but no recovery hints. LLM cannot determine if error is retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
Move the robot by the given delta units relative to its current position. Generates depth map and logs activity.
Update the rotation of the robot by Euler angle deltas in radians. Generates depth map and logs activity.
State-mutating tools (updatePosition, updateRotation, updateCamera) lack idempotency guarantees or confirmation patterns. No dry-run support. Agents retrying on ambiguous failures risk duplicate side effects.
tracePath accepts 'file' parameter but description says 'Image file to analyze', no format constraints (PNG, JPEG, max size). LLM may pass invalid formats. Also, 'obstacles' param expects JSON string but no schema provided.