Let any AI agent see — analyze and describe images through the three.ws vision pipeline. Free NVIDIA NIM VLMs first, with an automatic server-side paid backstop. Pass an image URL or base64 and get a structured, natural-language read. Read-only, no key required.
Three tools with strong naming (verb_noun pattern), comprehensive descriptions (194 - 400 chars), and detailed JSON Schema with type constraints, enums, and parameter descriptions. All three are read-only, stateless vision operations. Output schemas are documented in descriptions but not formally in the schema object itself. Error handling is present but generic (code + message). No critical gaps, but output structure could be more explicit in schema definitions.
Let the agent SEE an image and answer a question about it. Supply the image as `imageUrl` (a public https URL the vision server fetches) OR `image` (raw base64 / a data: URI), and a `prompt` describing what to extract — e.g. "What objects are in this scene?", "Read the text in this screenshot", "Is this avatar render rigged correctly?". Returns the model's answer as `text`, plus the `provider` and `model` that served it (a free NVIDIA NIM lane when available, an automatic paid backstop otherwise — the caller never pays). Analysis only: it does not store or mutate anything. Accepts JPEG, PNG, WebP, or GIF up to 12 MB; base64 inputs are size-checked before upload.
Get a plain-language description of an image — ideal for alt text, captions, or a quick "what is this?" read when you have no specific question. Supply the image as `imageUrl` (a public https URL) OR `image` (raw base64 / data: URI). Use `detail` to pick brief / standard / detailed, and `focus` to steer the description toward something specific (e.g. "the clothing", "any visible text"). Returns the prose as `description`, plus the `provider` and `model` that served it (free NVIDIA NIM first, automatic paid backstop otherwise — the caller never pays). Read-only; accepts JPEG, PNG, WebP, or GIF up to 12 MB.
Check whether the three.ws vision pipeline is live on the target deployment and which image formats it accepts. Returns `configured` (true when at least one VLM provider — a free NVIDIA NIM lane or the paid backstop — can serve a request) and `image_types` (the accepted MIME types). Use this before calling analyze_image / describe_image so the agent can decide whether to offer a "describe this image" action. No image, no key, no cost.
Output schemas not formally documented in tool registration. Descriptions mention return fields (text, provider, model, description, configured, image_types) but JSON Schema does not include outputSchema property. LLMs cannot parse expected response structure from schema alone.
Error responses return generic {ok: false, error, message, status?} structure. No guidance on recovery actions (e.g., 'Image too large, reduce to <12 MB' or 'Rate limited, retry in 30s'). Errors are categorized implicitly by code but not explicitly labeled as retryable/user-fixable/fatal.
Parameter descriptions use examples in prose ('e.g. "What objects are in this scene?"') rather than relying solely on constraints. While helpful, LLMs may reuse example values literally. Recommend moving examples to separate 'examples' field or constraint documentation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
No dry-run or confirmation pattern for vision operations. While read-only (no mutation risk), a preview mode (e.g., 'show me what you would analyze without calling the API') could reduce wasted calls on malformed inputs.