shadow-vision
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OLLAMA_URL | No | Ollama chat endpoint (used when VISION_BACKEND is ollama). Run `ollama pull <vision-model-name>` before use to download the model. | http://127.0.0.1:11434/api/chat |
| VISION_MODEL | No | Vision model name. | qwen3-vl:2b-instruct |
| GEMINI_API_KEY | No | Gemini API key (used when VISION_BACKEND is gemini). | |
| OPENAI_API_KEY | No | API key for the OpenAI-compatible service; usually left blank for local services. | |
| VISION_API_KEY | No | Legacy environment variable for the API key, supported for backward compatibility. | |
| VISION_BACKEND | No | Vision backend used to route requests: ollama / openai_compatible / anthropic / gemini. | ollama |
| VISION_TIMEOUT | No | Read timeout (seconds), compatibility alias for VISION_READ_TIMEOUT. | 180 |
| GEMINI_BASE_URL | No | Optional Gemini base URL override. | |
| OPENAI_API_BASE | No | OpenAI-compatible service base URL (used when VISION_BACKEND is openai_compatible). | http://127.0.0.1:11434/v1 |
| VISION_API_BASE | No | Legacy environment variable for the OpenAI-compatible service base URL, supported for backward compatibility. | |
| VISION_AUTO_TILE | No | Whether to automatically tile extra-long images. | true |
| VISION_MAX_TILES | No | Maximum number of tiles per image. | 8 |
| ANTHROPIC_API_KEY | No | Anthropic API key (used when VISION_BACKEND is anthropic). | |
| ANTHROPIC_VERSION | No | Optional Anthropic API version override. | |
| GEMINI_MAX_TOKENS | No | Optional maximum output tokens for Gemini. | |
| OPENAI_MAX_TOKENS | No | Optional max output tokens; omits the token limit field when unset. | |
| VISION_MAX_PIXELS | No | Compression threshold: total pixels. | 3500000 |
| VISION_MAX_TOKENS | No | Legacy environment variable for the max output tokens, supported for backward compatibility. | |
| ANTHROPIC_BASE_URL | No | Optional Anthropic base URL override. | |
| VISION_MAX_RETRIES | No | Retry attempts for transient / 5xx errors (total requests = 1 + this value). | 2 |
| VISION_READ_TIMEOUT | No | Read timeout (seconds). | 180 |
| VISION_TASK_ROUTING | No | Whether to enable heuristic task routing for vision_inspect. | true |
| VISION_TILE_OVERLAP | No | Tiling overlap pixels. | 100 |
| ANTHROPIC_MAX_TOKENS | No | Optional maximum output tokens for Anthropic. | |
| VISION_AUTO_COMPRESS | No | Whether to automatically compress large images. | true |
| VISION_FETCH_TIMEOUT | No | Remote fetch timeout (seconds). | 30 |
| VISION_MAX_LONG_EDGE | No | Compression threshold: long-edge pixels. | 1800 |
| VISION_TILE_LONG_EDGE | No | Tiling threshold: long-edge pixels. | 3600 |
| VISION_CONNECT_TIMEOUT | No | Connect timeout (seconds). | 10 |
| VISION_MAX_REMOTE_SIZE | No | Maximum remote image size in bytes (20MB). | 20971520 |
| OPENAI_MAX_TOKENS_FIELD | No | Optional token limit field name: max_tokens or max_completion_tokens. | max_tokens |
| VISION_ALLOW_REMOTE_URL | No | Whether to allow remote URL image inputs. | true |
| VISION_COMPRESS_QUALITY | No | JPEG re-encoding quality. | 85 |
| VISION_MAX_BATCH_IMAGES | No | Maximum number of images per vision_compare call. | 5 |
| VISION_MAX_TOKENS_FIELD | No | Legacy environment variable for the token limit field name, supported for backward compatibility. | |
| VISION_RETRY_BASE_DELAY | No | Exponential backoff base delay in seconds. | 1.0 |
| VISION_SSRF_ALLOW_PRIVATE | No | Whether to allow private / intranet addresses (strongly discouraged). | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| vision_ocrC | Extract all text from an image. Pass image_path (local file) or image_base64 + mime_type. |
| vision_inspectC | Describe or answer questions about an image. Pass image_path (local file) or image_base64 + mime_type. |
| vision_annotateB | Identify user's visual annotations (circles, arrows, underlines, highlights, scribbles, handwritten text) and their targets, returning structured JSON. |
| vision_layoutC | Analyze an image's layout structure and return structured JSON (canvas, elements, relations). |
| vision_reconstructC | Reconstruct a screenshot into code (html/react/svg) with a model self-check. |
| vision_compareC | Analyze multiple related images (diff, compare, sequence) in one call. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Each tool targets a distinct output modality: description, annotations, OCR text, layout JSON, code reconstruction, and multi-image comparison. Some boundary blur exists between vision_inspect (general description, which may incidentally read text) and vision_ocr, and between vision_layout and vision_reconstruct, but the descriptions clarify the intended scope of each.
All six tools follow a strict vision_<verb> snake_case pattern (inspect, annotate, ocr, layout, reconstruct, compare). The convention is predictable and readable throughout.
Six tools is well-scoped for a vision-analysis server, with each tool earning its place by covering a distinct capability. No redundant or filler tools are present.
The surface covers the major analysis workflows: description, OCR, annotation detection, layout parsing, code reconstruction, and multi-image comparison. Minor gaps like detecting/returning bounding boxes or image generation/editing exist, but they are outside the apparent analysis-focused purpose.