Skip to main content
Glama

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 compiler

That 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.

VisionMCP public-alpha walkthrough

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-VisualProgramIR compiler 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 studio

The 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

core

projects, local media evidence, receipts, resources

none beyond core Python dependencies

web

governed Chromium/DOM/a11y/style/network evidence

.[web] and host Chrome

compiler

VisualProgramIR, emission, repair planning, benchmark creation

core install

3d

Blender, GLB/glTF, geometry and validation

Blender; geometry extra for reconstruction

binary

authorized isolated Ghidra analysis

Ghidra 11.2.1 and JDK 21+

ocular

recorded streams, tracking, world state, next-view

.[ocular]; EXPERIMENTAL

full

accepted public profiles

profile-specific runtimes

dev

evaluators, probes, attack fixtures, diagnostics

.[dev]; never the default

visionmcp serve --profile core
visionmcp serve --profile compiler
visionmcp capabilities --profile compiler --json

Core 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 fixture

demo 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-only

A 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 wheel

Both 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 tools
project.createC

Create a portable project (millimetres, right-handed, Z-up).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
target_fidelityNoL3

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose2/5

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.

Usage Guidelines1/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
capture_aYes
capture_bYes
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
capture_idYes
graph_typeNo
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
digestYes
include_pathNo
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
adapterNoimage.file
source_idNo
project_pathYes
configurationNo
rights_decisionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
capture_idYes
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
capture_idNo
project_pathYes
receipt_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior1/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 15 tool updatesv0.1.0
    • First observedproject.create
    • First observedproject.status
    • First observedsystem.doctor
    • First observedvision.capabilities
    • First observedvision.close_project
    • First observedvision.compare
    • First observedvision.explain_region
    • First observedvision.get_artifact
    • First observedvision.list_artifacts
    • First observedvision.observe
    • First observedvision.open_project
    • First observedvision.progress
    • First observedvision.query
    • First observedvision.review_queue
    • First observedvision.verify

TDQS

B3.1/5.0
Disambiguation5/5

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 Consistency3/5

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.

Tool Count5/5

With 15 tools, the server covers project, artifact, and visual capture workflows comprehensively without unnecessary bloat. The count feels well-scoped for the domain.

Completeness4/5

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

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Verifiable action receipts for AI agents — agents sign claims locally, an independent witness countersigns and timestamps, anyone can verify offline.
    14
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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.
    11
    Business Source 1.1
  • A
    license
    Not graded
    quality
    B
    maintenance
    Verified 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.
    12
    1
    MIT

Latest Blog Posts

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