MCP server for macOS camera control and frame capture, providing snapshot, streaming, and mood analysis capabilities
All 5 tools have identical empty input schemas (no parameters, no properties). Descriptions are present but generic and lack actionable guidance for LLM selection. No parameter descriptions exist (N/A since no parameters). Tool names use verb_noun pattern (agent_vision_*) but lack clarity on distinctions. No output schemas documented. Error handling is minimal, only generic error messages without recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear read/write semantics.
Return the latest live JPEG frame from the active streaming-mode Agent Vision camera session.
Capture one consented Agent Vision JPEG frame for opt-in mood analysis. The MCP server returns image content only; Codex must use the file-backed slash-command path for semantic interaction-state inference.
Take one Agent Vision snapshot: start the built-in macOS camera if needed, return one JPEG frame, then stop only if snapshot started the camera.
Start streaming mode by keeping the persistent Agent Vision capture session active.
Stop streaming mode, release the camera, and clear the cached frame.
All tools have empty input schemas with no properties.
No output schemas documented. LLMs cannot plan downstream calls or extract structured data from responses. Baseline: 100% of A+ tools have documented return types.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Code marks agent_vision_start and agent_vision_stop as WRITE operations, but LLM has no way to know this from tool definition.
Descriptions lack actionable guidance. No explanation of when to use snapshot vs mood vs frame, or prerequisites for streaming mode. Baseline: descriptions should answer WHAT, WHEN, and WHAT IT RETURNS.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 35 | 2025-06-18+ | v2 |
Error handling is generic. toolErrorResponse returns only error text with no recovery guidance. Per pattern, errors should tell LLM what to do next or classify as retryable/user-fixable/fatal.