Pixel-perfect website screenshot service exposed as both REST API and MCP server. Captures webpages as PNG, JPEG, or PDF using Playwright with built-in caching, API key authentication, and rate limiting.
Two tools with identical schemas and reasonable descriptions. Both tools have complete input schemas with proper types, ranges, and defaults. Descriptions are adequate (120-150 chars) but lack actionable context about when to use each tool or what distinguishes them. Parameter descriptions are present but generic. No output schema documented. Error handling is minimal, only a generic 'Screenshot failed' message with no recovery guidance. The two tools appear to do nearly the same thing (take_screenshot vs screenshot_to_base64), which violates single-responsibility principle.
Take a screenshot of a website URL and return it as a base64-encoded string. Useful for embedding screenshots inline in responses or passing to other tools. Supports PNG, JPEG, and PDF output formats.
Take a pixel-perfect screenshot of a website URL. Returns the screenshot as an image that can be viewed directly. Supports PNG, JPEG, and PDF output formats.
Two tools with nearly identical functionality (take_screenshot vs screenshot_to_base64) violate single-responsibility principle. LLMs will struggle to choose between them. Consolidate into one tool with a 'return_format' parameter (image|base64).
No output schema documented. LLMs cannot plan downstream operations or extract fields. Document what take_screenshot returns (ImageContent with mimeType) and what screenshot_to_base64 returns (TextContent with base64 string and metadata).
Error handling is generic ('Screenshot failed: {error}'). Does not guide LLM on recovery. Should categorize errors (network timeout → retry, invalid URL → ask user, browser crash → fatal) and provide actionable guidance.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
Parameter descriptions are minimal and lack format guidance. E.g., 'wait_for' says 'CSS selector' but does not explain timeout behavior, what happens if selector never matches, or example syntax. 'inject_css' lacks size limits or injection attack warnings.
Tool descriptions do not explain when to use take_screenshot (direct image return) vs screenshot_to_base64 (base64 embedding). LLMs cannot infer the distinction without explicit guidance on use cases.