VisionMCP
A local MCP server for managing visual evidence projects: capture, inspect, compare, verify, and review visual artifacts.
List available, blocked, and experimental capabilities for the active profile.
Run an offline core doctor without optional dependencies.
Create portable projects and open, close, or check the status of project paths.
Capture local visual targets into durable OBSERVED evidence with no browser.
Query observed perceptual graphs with exact artifact citation.
Explain evidence, authority, and uncertainty at a given observed pixel.
Compare two captures by digest identity and overview metadata.
Verify captures by evidence digest or verify receipt files.
List and retrieve content-addressed artifacts by SHA-256 digest.
Return compact perception progress and evidence counts.
List items that still require named human or policy review.
Provides 3D analysis capabilities using Blender, including geometry reconstruction, GLB/glTF handling, validation, and rendering, with optional authorized Blender lane for visual evidence in VisionMCP.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@VisionMCPcompile the visual program from the latest capture"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
VisionMCP
A visual compiler and verifier for coding agents.
VisionMCP turns rendered evidence into inspectable visual programs, compares target and candidate worlds, maps residuals back to source, and binds claims to tamper-evident receipts. It runs locally, exposes a small MCP surface by default, and moves heavy evidence through content-addressed resources.
uvx --from \
'visionmcp-ocular[compiler] @ git+https://github.com/joshuahickscorp/visionmcp@v0.8.0-alpha.2' \
visionmcp demo compilerThat demo needs no account, API key, model weight, or network after installation. It compiles a bundled CC0 fixture, injects one controlled source defect, maps the residual to its declaration, repairs it, verifies the receipt, and rejects two tampered copies.
Public alpha. Ocular is EXPERIMENTAL. The previous Apple benchmark scored 297 cases across three experiments with zero complete passes. VisionMCP does not claim a perfect copy or original-source recovery.

What works
A 15-tool lightweight core for projects, local evidence, artifact lookup, comparison, verification, progress, and review.
Versioned, paginated, content-addressed MCP resources for captures, states, motion, correspondence, residuals, source bindings, repairs, receipts, benchmarks, models, and binary analyses.
An evidence-to-
VisualProgramIRcompiler with deterministic HTML/CSS emission and explicit uncertainty.A loopback-only Studio with target/candidate views, correspondence, residuals, source traces, repair queue, motion, receipts, 3D, and authorized binary summaries.
Portable receipt verification that rejects changed payloads and artifacts.
Optional physical Ghidra and Blender lanes with governed authorization and honest blockers when runtimes are absent.
The machine-readable claim authority is
artifacts/capability-ledger.json; the
human view is docs/CAPABILITY_LEDGER.md. README
claims are checked against that ledger in CI.
Related MCP server: Witnessed
Try it from a clone
git clone https://github.com/joshuahickscorp/visionmcp
cd visionmcp
uv sync --extra dev --extra ocular
uv run visionmcp doctor --core
uv run visionmcp demo compiler
uv run visionmcp demo verify
uv run visionmcp studioThe distribution name remains visionmcp-ocular; the import and command are
both visionmcp. Production PyPI is not published as part of this alpha
without separate operator authorization.
Profiles
Profile | Adds | Host requirements |
| projects, local media evidence, receipts, resources | none beyond core Python dependencies |
| governed Chromium/DOM/a11y/style/network evidence |
|
| VisualProgramIR, emission, repair planning, benchmark creation | core install |
| Blender, GLB/glTF, geometry and validation | Blender; geometry extra for reconstruction |
| authorized isolated Ghidra analysis | Ghidra 11.2.1 and JDK 21+ |
| recorded streams, tracking, world state, next-view |
|
| accepted public profiles | profile-specific runtimes |
| evaluators, probes, attack fixtures, diagnostics |
|
visionmcp serve --profile core
visionmcp serve --profile compiler
visionmcp capabilities --profile compiler --jsonCore exposes 15 high-level MCP tools—inside the 12–20 target—and does not load a browser, Blender, Java adapter, model backend, or plugin at startup.
Studio
visionmcp studio
# prints and opens http://127.0.0.1:7741/Studio binds only to 127.0.0.1, has no account or telemetry, lazy-loads heavy
evidence, draws correspondence graphs on a bounded canvas, supports keyboard
navigation, and exports a static report. It refuses 0.0.0.0.
Demos
visionmcp demo compiler
visionmcp demo verify
visionmcp demo binary # physical Ghidra or structured BLOCKED + exact fix
visionmcp demo 3d # physical Blender or structured BLOCKED + exact fix
visionmcp demo ocular # EXPERIMENTAL recorded fixturedemo binary analyzes a source-known fixture without executing it or giving
the analyzer its source. Decompiler output is labelled approximation.
demo 3d produces an editable BLEND, desktop/mobile GLBs, a fixed Cycles
render, an authority/uncertainty map, reopen validation, and a receipt. Neither
demo silently substitutes a fallback PASS.
Receipts and benchmarks
visionmcp receipt explain path/to/receipt.json
visionmcp receipt verify path/to/receipt.json
visionmcp benchmark escrow doctor --escrow path/to/escrow
visionmcp benchmark escrow rehearse --escrow path/to/escrow --public-onlyA receipt says what physically ran, what was inferred, what was blocked or substituted, and which claims remain experimental. Integrity verification is not fidelity verification.
Evaluator escrow binds corpus splits, metrics, thresholds, environment, canaries, counters, commands, schemas, rights, and digests. Hidden execution is opaque and policy-gated; Apple Parity 05 hidden remains untouched until every frozen public case passes.
Local-first and safe by default
Telemetry is off.
Core doctor is offline.
No model or browser is downloaded automatically.
Studio is loopback-only.
Plugin discovery reads data manifests and imports no third-party code.
Optional workers are bounded and checked for leaks.
Public export audits reject creator-local paths and private benchmark data.
See docs/SECURITY.md, docs/PRIVACY.md,
docs/security/THREAT_MODEL.md, and
docs/LIMITATIONS.md.
Honest failure history
The Apple work is valuable because it failed loudly. Three Parity 04 experiments produced zero complete passes over 297 scored cases and exposed false-pass mechanisms around identity, observability, containment, assets, and evaluator authority. Those failures are preserved in the capability ledger and launch notes. The public alpha is useful independently of Apple Parity 05.
Contributing
Run the focused public gates:
python tools/scripts/check_capability_ledger.py
pytest -q
ruff check .
python -m build # core wheel
uv build tools/packaging/visionmcp-ocular-kernels # companion wheelBoth wheels are required. Every extra except imaging pins
visionmcp-ocular-kernels, and python -m build does not produce it — a core
wheel alone gives ModuleNotFoundError on roughly forty subpackages.
Start with .github/CONTRIBUTING.md,
docs/ARCHITECTURE.md, and
docs/PLUGIN_API.md. Security reports follow
docs/SECURITY.md; do not open a public issue for an undisclosed
vulnerability.
Apache-2.0. Demo and model asset licenses are enumerated separately.
Available Tools
15 toolsproject.createC
Create a portable project (millimetres, right-handed, Z-up).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| target_fidelity | No | L3 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should fully disclose behavioral traits, but it only states 'create' without detailing side effects, permissions, or state changes. The coordinate system info is helpful but insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no waste, which is concise, but it comes at the cost of missing important details about parameters and usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimally complete for a simple creation tool with an output schema, but it leaves ambiguity about the meaning of 'portable' and the 'target_fidelity' parameter. Given the schema has no descriptions, more context would be valuable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. It does not mention 'name' or 'target_fidelity' at all, leaving their meaning entirely to the schema field names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create) and the resource (portable project), and specifies key attributes (millimetres, right-handed, Z-up), which helps distinguish it from sibling tools like project.status or vision tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, typical use cases, or scenarios to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project.statusC
Return project status and directory health.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states it returns information, without mentioning read-only nature, required permissions, side effects, or response format. This is insufficient for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at one sentence, which is efficient. However, the conciseness comes at the cost of providing necessary detail, slightly reducing its effectiveness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter, no annotations, and only the minimal description, it is not complete for an agent to understand what specifically is returned, how to interpret results, or any dependencies. The presence of an output schema helps but the description fails to fill gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the description does not explain the parameter 'project_path' at all. The agent gains no additional meaning beyond the parameter name, which is minimally informative.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns project status and directory health, using a specific verb and resource. While it distinguishes from siblings like project.create and vision.*, it could be more specific about what constitutes 'status' and 'health'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives or when not to use it. The description implies general usage for checking project status, but lacks explicit context or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system.doctorC
Core doctor: offline, no optional dependency required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states it is 'offline' and requires no optional dependencies. It does not disclose whether the tool is read-only, modifies state, or any authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise but at the expense of clarity; it could be front-loaded with the tool's purpose rather than technical properties.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description fails to explain what the tool does or when to use it, leaving the context incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so baseline 4 applies. The description adds nothing about parameters, but none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Core doctor' is vague and does not specify what the tool does. It mentions 'offline' but lacks a verb or clear resource, making it difficult to distinguish from sibling tools like vision tools or project tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, conditions, or comparison with other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vision.capabilitiesA
List available, blocked, and experimental capabilities for the active profile.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes the output types (available, blocked, experimental) but does not disclose behavioral traits such as read-only nature, authentication requirements, or potential side effects. The description is adequate but lacks explicit safety guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the tool's purpose efficiently with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with an output schema (not shown), the description covers the essential information: what it returns (categorized capabilities) and the scope (active profile). It is complete for its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the description's mention of 'available, blocked, and experimental capabilities' adds significant meaning beyond the empty schema. This qualifies as high value addition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and clearly identifies the resource 'capabilities' with scope 'for the active profile'. It distinguishes this tool from sibling tools like vision.observe or vision.query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when needing to know available, blocked, or experimental capabilities, but does not provide explicit guidance on when to use vs alternatives or when not to use. No sibling tools offer similar functionality, making the distinction implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vision.close_projectA
Forget a project path from the session map (does not delete files).
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must disclose behavioral traits; it clarifies non-destructive nature and scope (session map only). Additional detail on side effects or permissions would improve, but adequate for a simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is concise, front-loaded with the main purpose, and includes a critical clarification. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with one parameter; description covers core purpose and a key behavioral trait. Could mention if project must be currently open, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet description adds no extra meaning for the parameter 'project_path' (e.g., format, required prefix). The parameter's name hints at its role, but the description should compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Forget a project path from the session map') and explicitly specifies it does not delete files, which distinguishes it from a deletion tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly indicates when to use (remove from session map) and what it does not do (delete files), providing context even without explicit alternatives. Slightly vague on prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vision.compareC
Compare two captures by digest identity and overview metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| capture_a | Yes | ||
| capture_b | Yes | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It mentions 'compare' which implies a read operation, but it does not state whether the tool is read-only, whether it modifies state, what happens on mismatch, or any side effects. This lack of transparency is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, making it concise and front-loaded. However, it is so minimal that it may under-specify the tool's behavior. Every word is necessary but not sufficient for full understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 required parameters, no enums, and an output schema (unknown content), the description does not address what the output looks like (e.g., diff, boolean, score) or any other contextual details like error handling or trivial case behavior. The description is incomplete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the description adds minimal parameter meaning. It refers to 'two captures' (matching capture_a and capture_b) but does not explain their format, constraints, or how 'project_path' is used. The description does not compensate for the missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action is 'Compare two captures' and specifies the basis ('by digest identity and overview metadata'). It distinguishes the tool from siblings like 'vision.verify' or 'vision.query' by focusing on comparison of captures. However, it doesn't elaborate on what the comparison yields, which could be clearer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'vision.verify' or 'vision.observe'. The description does not mention prerequisites, context, or exclusions, leaving the agent without direction for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vision.explain_regionC
Explain evidence, authority, and uncertainty at an observed pixel.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| capture_id | Yes | ||
| graph_type | No | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states what the tool explains but gives no insight into side effects, permissions, rate limits, or what happens upon invocation. This is insufficient for a tool with potential complexity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but it compromises informativeness. It front-loads the main action but omits critical details. For a tool with 5 parameters, it could be slightly longer to cover key points without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and the presence of an output schema (content unknown), the description lacks details about output format, error handling, and prerequisites. It is incomplete for a tool with multiple required parameters and no behavioral hints from annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description offers no parameter-specific information. It mentions 'at an observed pixel' implying x,y coordinates but does not explain project_path, capture_id, or graph_type. The description adds no value beyond the bare schema names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'explain' and the resource 'region', and specifies it deals with evidence, authority, and uncertainty at a pixel. It differentiates from siblings like vision.observe or vision.query by focusing on explanation of evidence, but does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or scenarios where it is appropriate. The agent is left to infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vision.get_artifactC
Resolve a content-addressed artifact by SHA-256 digest.
| Name | Required | Description | Default |
|---|---|---|---|
| digest | Yes | ||
| include_path | No | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says 'resolve,' implying read-only retrieval, but does not mention side effects, authorization needs, or output format. For a retrieval tool without annotations, more detail is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundant words. Front-loaded with the core action. Could be slightly more detailed without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters and an output schema (not detailed in description), the description lacks completeness. It does not explain the return value, error handling, how 'include_path' affects the result, or the expected format of 'project_path.' This is insufficient for a tool likely used in retrieval workflows.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds value by clarifying that 'digest' is a SHA-256 digest, but provides no additional meaning for 'include_path' or 'project_path.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool resolves an artifact by SHA-256 digest. It uses a specific verb-resource pair, distinguishing it from listing tools like vision.list_artifacts, though not explicitly differentiating from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like vision.observe or vision.query. No prerequisites, exclusions, or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vision.list_artifactsC
List content-addressed artifacts recorded in the project.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It fails to mention pagination, ordering, or any side effects. The tool is read-only but that is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. However, it could be slightly more informative without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with an output schema, the description should mention pagination, sorting, or filtering. It does not, making it incomplete given the lack of parameter descriptions and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not add any parameter meaning beyond parameter names. 'limit' and 'project_path' are somewhat self-explanatory but the description could clarify limit's purpose and default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and resource 'content-addressed artifacts', and specifies the scope 'recorded in the project'. This distinguishes it from sibling tools like vision.get_artifact which retrieves a single artifact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like vision.query or vision.get_artifact. The description lacks any context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vision.observeB
Capture a local visual target into durable OBSERVED evidence (no browser).
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| adapter | No | image.file | |
| source_id | No | ||
| project_path | Yes | ||
| configuration | No | ||
| rights_decision | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It mentions 'durable' and 'no browser' but lacks details on side effects, required permissions, whether it writes to persistent storage, or if it is destructive. The description minimally discloses behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that immediately states the core action and key constraint. No extraneous words; every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description does not explain what constitutes 'OBSERVED evidence', the expected input types (e.g., file path, camera), or how parameters like 'target' or 'source_id' are used. Given the tool's complexity (6 parameters) and lack of schema descriptions, the description is insufficient for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage (no descriptions on any parameter). The tool description adds no explanation of the 6 parameters, their roles, or how they relate to the tool's function. This forces the agent to guess parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'capture', the resource 'local visual target', and the resulting 'durable OBSERVED evidence'. It also explicitly notes 'no browser', distinguishing it from browser-based tools. This provides specific and unambiguous purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for capturing visual evidence locally without a browser, but it provides no explicit guidance on when to use this tool versus alternatives like vision.capabilities, vision.query, or vision.verify. There are no exclusions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vision.open_projectA
Open an existing project path and remember it for this session.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses session persistence but no annotations; lacks details on error handling, permissions, or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb and resource, no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core action and session trait; output schema exists so return values need not be described; minor gaps on error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning beyond schema ('existing', 'remembered for session') to single parameter, compensating for 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action 'open' on an 'existing project path' and adds session memory behavior, distinguishing from siblings like vision.close_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage (open for session) but no explicit when-to-use or alternatives, though siblings list provides context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vision.progressC
Return compact perception progress and evidence counts.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states it returns data. No mention of read-only nature, side effects, permissions, or limitations. The term 'compact' hints at a summary but not enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise but lacks sufficient detail. It could be expanded to include parameter hints or output context without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter and an output schema (not shown), the description should explain the nature of 'perception progress' and 'evidence counts'. It does not, leaving the agent uncertain about the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'project_path' is not described in the input schema (0% coverage) and the description does not clarify what it is or how to use it. The description adds no value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'return' and identifies the resource as 'perception progress and evidence counts'. It distinguishes from sibling tools like vision.observe or vision.query, but the term 'compact' is vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like vision.verify or vision.review_queue. No exclusions or context are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vision.queryC
Query an observed perceptual graph with exact artifact citation.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| capture_id | Yes | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks behavioral details beyond the brief statement. It does not disclose whether the tool is read-only, what side effects occur, or any constraints like requiring a specific capture state. With no annotations, the description carries the full burden but fails to provide this context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (10 words) but lacks necessary structure and detail. It is under-specified, missing parameter explanations and usage context, which reduces its effectiveness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (3 required params, nested object in 'query', no schema descriptions, no annotations), the description is incomplete. It does not explain how to construct the query object, what capture_id and project_path refer to, or what the output contains, making it inadequate for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the input schema provides no parameter descriptions. The tool description adds no meaning to parameters like 'query', 'capture_id', or 'project_path'—it does not explain their roles, formats, or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Query an observed perceptual graph with exact artifact citation.' It uses a specific verb and resource, and mentioning 'exact artifact citation' differentiates it from siblings like vision.observe or vision.explain_region.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or exclusions, which is insufficient for an AI agent to decide when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vision.review_queueC
List items that still require named human or policy review.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose whether the tool is read-only, whether it returns only pending items, or any other behavioral traits beyond listing. Minimal transparency for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is front-loaded with the verb and resource, and every word earns its place. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and an output schema exists. The description minimally covers the purpose but lacks details on scope, pagination, or what 'still requires review' means. Adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for the single required parameter 'project_path'. The description adds no meaning beyond what the schema provides, and does not clarify the parameter's format, purpose, or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'items that still require named human or policy review', making the tool's purpose clear. It distinguishes from siblings like 'vision.capabilities' or 'vision.observe' by focusing on review queue items, though no explicit differentiation is provided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It simply states what the tool does without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vision.verifyC
Verify a capture by evidence digest or verify a receipt file.
| Name | Required | Description | Default |
|---|---|---|---|
| capture_id | No | ||
| project_path | Yes | ||
| receipt_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose all behavioral traits, but it only states the action. It does not mention side effects, idempotency, required permissions, failure behavior, or what verification means. This is a severe gap for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff, achieving high conciseness. However, it is not structured into sections or bullet points, which would improve scanability. It is appropriately sized for the information provided but could benefit from slightly more detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists, the description does not mention what the tool returns (e.g., boolean, object with proof). With 3 parameters (1 required) and no param descriptions, the description leaves much to be inferred. Given the complexity of a verification tool and the existence of many siblings, the description is incomplete for correct tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description only vaguely maps 'evidence digest' and 'receipt file' to parameters without naming them. The required 'project_path' is not explained, and the optional parameters 'capture_id' and 'receipt_path' are not explicitly tied to the two verification modes. The description adds minimal value over the schema structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'verify' and the two resources: 'capture by evidence digest' or 'receipt file'. It distinguishes from sibling tools like 'vision.observe' or 'vision.query' by focusing specifically on verification. However, it does not elaborate on what 'verify' entails (e.g., integrity check, authenticity), leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, typical scenarios, or conditions under which verification is appropriate. It also lacks explicit 'when-not-to-use' advice or references to related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
15 tool updates
v0.1.0- First observed
project.create - First observed
project.status - First observed
system.doctor - First observed
vision.capabilities - First observed
vision.close_project - First observed
vision.compare - First observed
vision.explain_region - First observed
vision.get_artifact - First observed
vision.list_artifacts - First observed
vision.observe - First observed
vision.open_project - First observed
vision.progress - First observed
vision.query - First observed
vision.review_queue - First observed
vision.verify
TDQS
Each tool has a clearly distinct purpose: capabilities, system doctor, project management (create/status/open/close), artifact listing/resolution, visual capture (observe, query, explain, compare, verify), progress reporting, and review queue. No two tools overlap in function.
Naming uses a mix of conventions: 'vision.capabilities' (noun), 'system.doctor' (noun), 'project.create' (verb), 'vision.open_project' (verb with underscore). While readable, the pattern is inconsistent across tools.
With 15 tools, the server covers project, artifact, and visual capture workflows comprehensively without unnecessary bloat. The count feels well-scoped for the domain.
The tool surface covers core operations: project lifecycle (create/status/open/close), artifact access, visual capture and verification, and review. Minor gaps like absence of project update/delete or artifact removal exist, but the domain is self-contained.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Evidence-bounded static agent security checks with signed redacted receipts.
Cryptographically anchored evidence for agents: verified run receipts, proof-gated settlement.
Machine-native utility network: verified evidence services for autonomous agents.
MERCATOR Verify: evidence-backed verification and decision support for autonomous agents.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceTamper-evident receipts for AI agent actions. The notary layer for agent-to-agent transactions.701MIT- AlicenseNot gradedqualityDmaintenanceVerifiable action receipts for AI agents — agents sign claims locally, an independent witness countersigns and timestamps, anyone can verify offline.14MIT
- AlicenseNot gradedqualityCmaintenanceA deterministic AST evidence engine that forces AI agents to debug using verified execution facts instead of pattern-matching symptoms, enabling hallucination-free debugging for MCP-compatible agents.11Business Source 1.1
- AlicenseNot gradedqualityBmaintenanceVerified memory for AI agents — agents propose memories that are quarantined until verified against evidence, and recall() returns only trusted, fresh, and in-scope facts, preventing poisoned or hallucinated data from spreading.121MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/joshuahickscorp/visionmcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server