MCP server that gives coding agents vision through OpenAI-compatible multimodal models, with reliable binary image uploads for remote deployments.
Ocular provides 8 vision-focused tools with complete input schemas and descriptions. All tools follow verb_noun naming (analyze_*, extract_*, create_*) and include parameter descriptions. However, output schemas are not documented, responses are returned as JSON text without formal schema declarations. Error handling is minimal; tools return generic error objects without recovery guidance. The create_upload_session tool has an unusually long description (400+ chars) that could be condensed. Most tools are read-only (good for safety) but lack explicit readOnlyHint annotations in the protocol.
Analyze a chart image and return labels, trends, approximate values, and limitations.
Analyze a general image and return structured JSON for a coding agent.
Analyze a webpage, app, UI, or design mockup screenshot for frontend implementation work.
Compare two UI screenshots and return implementation-useful visual differences.
Returns upload instructions for the binary side channel (use this to analyze LOCAL image files without base64 corruption). Before uploading, verify the local file exists and is non-empty with Bash (e.g. `ls -la <path>` or `test -f <path> && stat -c %s <path>`). Then PUT the raw bytes to the returned upload_url with curl --data-binary (NOT base64); the response gives a file_id to pass to any vision tool. Stateless -- call once to learn the endpoint.
Output schemas not documented. Tools return JSON text without formal schema declarations. LLMs cannot plan downstream operations or validate response structure.
No error recovery guidance. Tools return generic error objects (toErrorResult) without actionable next steps. LLMs cannot self-correct or know whether to retry.
create_upload_session description is 400+ chars (exceeds 200-char baseline). Verbose instructions about curl and file verification should be condensed or moved to documentation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 70 | 2026-07-28+ | v2 |
Analyze error, terminal, console, browser, or build failure screenshots.
Extract visible table data from an image as structured JSON, Markdown, or CSV-oriented output.
Extract OCR text from screenshots, documents, tables, terminal output, or code images.
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint declared in tool definitions, despite all tools being read-only. Agents cannot infer safety properties.
compare_ui_screenshots accepts 'images' array but does not document expected array length, structure, or field names. LLMs may pass malformed image objects.