ViewGraph provides 41 tools with consistent naming (verb-prefixed) and parameter schemas. However, 39 of 41 tools are READ_ONLY utilities (auditing, analysis, comparison), leaving the core domain incomplete. Tool descriptions are adequate (all present, ~30 - 100 chars each) but lack depth, most do not explain WHEN to call them, dependencies, or expected outputs. Parameter descriptions are minimal ('Capture filename', 'URL to capture') without format constraints, ranges, or examples of valid input. No input validation guidance visible in tool definitions. Output schemas are not documented, we can infer they return structured data, but no formal schema definitions are visible in the source snippets. Tool composition is strong (names follow verb_noun convention, clear distinctions), but error handling is not addressed in the code samples. Two write operations (request_capture, resolve_annotation, set_baseline) lack confirmation or dry-run patterns despite modifying state. Security checks (permission gates, secret injection) are not visible. Overall, this is a solid mid-tier implementation with good naming discipline and parameter coverage, but insufficient description depth and missing output schema documentation prevent a higher score.
Analyze a user journey across multiple captures
Analyze interaction patterns from multiple captures
Audit accessibility issues in a capture using axe-core
Audit layout and spacing issues in a capture
Check the status of annotations across captures
Check consistency across multiple captures
Compare a capture against a baseline
Compare two captures for differences
Output schemas not documented. Tools return structured data but no formal response schema definitions visible in source. LLMs cannot plan downstream calls or extract required fields.
Tool descriptions lack WHEN-to-use guidance and are too brief. Most descriptions are 30 - 60 characters ('Get the most recent capture, optionally filtered by URL') without stating dependencies, expected use cases, or when an LLM should prefer this tool over similar ones.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | <=2025-11-25 | v2 |
Compare screenshots from two captures using pixel-level analysis
Compare CSS styles between elements in two captures
Detect recurring issues across multiple captures
Find differences in annotations between two captures
Find interactive elements missing test IDs
Find the source code location for an element in a capture
Generate a specification document from captures and annotations
Get a capture with annotation context and details
Get all annotations from a capture
Get a specific capture by filename
Get detailed differences between two captures
Get the history of captures for a URL pattern
Get statistics about a capture
Analyze component coverage across captures
Get elements by their ARIA role from a capture
Get a fidelity report for a capture
Get all interactive elements from a capture
Get the most recent capture, optionally filtered by URL
Get a summary of a capture without full DOM details
Get the status of a pending capture request
Get details of a specific session
Get the current status of a session
Get all unresolved annotations
List archived captures
List all saved baselines
List all captures in the captures directory
List all capture sessions
Request a new capture from the browser extension
Mark an annotation as resolved with a resolution note
Set a baseline from a capture
Validate a capture for completeness and correctness
Verify that a fix resolves an issue from a previous capture
Visualize a user flow across multiple captures
Parameter descriptions lack format constraints and validation guidance. E.g. 'urlFilter' described as 'Filter captures by URL substring' with no guidance on format (full URL? domain? regex?). No min/max for numeric limits.
Write operations (request_capture, resolve_annotation, set_baseline) lack confirmation or dry-run patterns. Agents making irreversible state changes should confirm before executing, but no such safeguards are visible.
No error handling guidance visible. When a tool fails (e.g. capture file not found, permission denied), no recovery actions documented. Error responses should tell LLMs what to do next.
No permission gates or security declarations visible. Tools can modify captures, annotations, and baselines but show no authorization checks or scope declarations (e.g. 'write:captures').
No input validation rules documented. Tools accept filename, URL, and ID parameters but do not specify format, length limits, or character restrictions in descriptions. LLMs will pass arbitrary strings.