Universal Visual Feedback & Video Direction for the RenderDraw Stack. Provides annotation management, session tracking, and visual feedback tools for web applications.
Lens MCP exposes 6 tools with basic schemas and descriptions, but falls short of production quality. Tool names follow verb_noun convention (lens_get_*, lens_acknowledge, etc.), which is good. However, descriptions are minimal (avg ~80 chars, well below the 194-char baseline for A+ tools). Most critically, parameter descriptions are sparse or missing entirely. For example, lens_get_pending accepts 'project_slug' with a description, but lens_get_session has two parameters (session_id, url) with minimal guidance on when to use each or how they interact. Error handling is present but generic ('Annotation not found', 'Session not found'), no recovery guidance. Output schemas are not documented in the tool definitions. The code shows in-memory state management with IndexedDB persistence, but no pagination, rate limiting, or result capping despite tools returning potentially large lists (getPendingAnnotations returns all pending across all sessions). Tool composition is reasonable (separate tools for acknowledge/resolve/dismiss/reply), but the interface lacks idempotency guarantees and confirmation steps for destructive operations.
Mark an annotation as acknowledged (you've seen it and will address it).
Dismiss an annotation (won't fix / not applicable).
Get all pending annotations. Includes element selectors, component trees, computed styles, and feedback comments.
Get a specific annotation session by ID or by page URL.
Add a reply to an annotation's thread.
Mark an annotation as resolved with an optional message.
Parameter descriptions are minimal or absent. lens_get_session has two mutually exclusive parameters (session_id vs url) with no guidance on which to use when. lens_resolve accepts 'resolved_by' with no description. LLMs cannot infer parameter semantics from names alone.
No output schema documentation. Tool definitions list names and input schemas but do not document what fields are returned. LLMs cannot plan downstream calls or extract required data without knowing the response structure.
No pagination or result capping. lens_get_pending returns all pending annotations across all sessions with no limit or offset. Large result sets blow context windows and degrade LLM reasoning. Baseline: cap at 20-50 items and offer pagination.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Error responses lack recovery guidance. Errors like 'Annotation not found' or 'Session not found' tell the LLM nothing about what to do next. Should include suggestions: 'Annotation not found. Try lens_get_pending() to list available annotations.'
Destructive operations (lens_resolve, lens_dismiss) lack confirmation or dry-run support. Agents make mistakes, irreversible state changes should require explicit confirmation or offer a rollback path.