MCP server: annotate your screen with OpenCV and add voice instructions for your AI agent.
vision2agent defines 7 tools with reasonable naming (verb_noun pattern) and descriptions, but critical gaps undermine quality. All tools have descriptions (10-200 chars, within baseline), but input schemas lack proper type definitions and parameter descriptions. Most parameters are documented in descriptions but not in formal schema. No output schemas documented. Error handling returns text messages but lacks recovery guidance or categorization. Tools are blocking/interactive (screen capture, audio recording, browser overlays), which is novel but creates composition challenges, no clear chaining between tools.
Return the last submitted session (screenshot, transcript, annotations) without opening a new UI.
Proxy your local dev URL and inject a drawing overlay on the live page. Use mouse to annotate (Draw mode) or interact with the page (Interact mode). Submit sends annotated screenshot + DOM hints to the agent. Blocks until submission.
Browser overlay on your dev page + hand gesture drawing via webcam (MediaPipe in-browser). Pinch to draw on the live site, thumbs up to submit. Blocks until submission.
Capture the screen and annotate using hand gestures via webcam. MediaPipe tracks your hand: pinch to draw, point to move, peace sign to undo, open palm to change color, thumbs up (hold) to submit. Blocks until submission.
Combined workflow: capture screen, annotate with OpenCV, and record a voice instruction. Returns annotated screenshot plus transcript. Best for "circle this button and say move it left".
Input schemas lack parameter type definitions and descriptions. Parameters like 'monitorIndex', 'port', 'audioSeconds' are documented in descriptions but not in formal JSON Schema with 'type' and 'description' fields. This violates pattern:constrained-input and pattern:tool-description.
No output schemas documented. buildResponse() returns structured content (text + image parts with metadata), but this structure is not declared in tool definitions. LLMs cannot plan downstream operations without knowing return fields.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Capture the screen and open an OpenCV annotation window. Draw rectangles, circles, arrows, and freehand strokes on top of the screenshot. Press Enter to submit annotated image to the agent. Blocks until submission.
Record a voice instruction from the microphone, transcribe it, and return the text to the agent. Optional max duration in seconds. Blocks until you finish recording (Space to start/stop in the audio UI).
Error handling returns plain text messages without recovery guidance or error classification. Errors like 'Connection refused' or 'Python setup required' lack actionable next steps (e.g., 'retryable', 'user-fixable', 'fatal'). Pattern:recovery-guide and pattern:error-classification not followed.
Tools are blocking/interactive (waitForState() blocks until user submits). No timeout, cancellation, or progress reporting. Agents cannot know how long to wait or whether a tool is hung. Pattern:progress and pattern:cancellation not implemented.
No tool composition or chaining support. Tools return session state but do not expose IDs or references for downstream operations. get_session_state retrieves 'last submitted session' but no tool accepts a session_id parameter to operate on specific sessions.