AGY Visual Witness MCP
Provides structured visual evidence from images via Google's Antigravity CLI, with tools for scene-level reading, targeted visual questioning, and image comparison prefiltering.
README
AGY Visual Witness MCP
A provider-specific visual reader for text-only agents. It uses Google's
Antigravity (agy) CLI and returns structured visual evidence, not an
acceptance verdict.
Three operations are intentionally separate:
WHOLE_READ: scene-level structured description through pinned ModLens.TARGETED_WITNESS: one image plus one visible-evidence question.COMPARE_PREFILTER: two images plus a list of visible difference candidates.
Every response declares:
control_surface = QA_ONLY
epistemic_label = INFERRED
authority = evidence_only_no_gate_no_acceptance_no_promotion
reproducibility_class = NOT_REPRODUCIBLE
It must not replace deterministic size/binding/AOV checks, pixel diffs, histograms, IoU measurements, human identity/art-direction judgment, or final promotion authority.
Relationship to ModLens
WHOLE_READ invokes
@liustack/modlens as an external CLI.
The targeted and comparison operations are separate clean-room adapters that
invoke agy structured output directly. No ModLens source is vendored here.
Install
- Install and sign in to the official
agyCLI. - Install Node.js/npm if you want
WHOLE_READ. - Install this package:
pipx install .
# or
uv tool install .
CLI
agy-visual doctor
agy-visual read --root /path/to/images --image /path/to/images/scene.png \
--operation WHOLE_READ
agy-visual read --root /path/to/images --image /path/to/images/hand.png \
--operation TARGETED_WITNESS \
--prompt "How many fingers are visibly countable? Mark occluded digits unknown."
agy-visual read --root /path/to/images \
--image /path/to/images/before.png --image /path/to/images/after.png \
--operation COMPARE_PREFILTER --prompt "List visible geometry differences only."
Use --dry-run to validate paths, hashes, operation contract, and runtime
identity without sending an image to a provider.
MCP
Codex config.toml example:
[mcp_servers.agy-visual-witness]
command = "agy-visual-witness-mcp"
env = { AGY_VISUAL_ROOTS = "/absolute/allowed/image/root" }
Tools:
describe_image_geminiagy_visual_doctor
Boundaries
- Local files only; URLs are rejected.
- Images must stay under
AGY_VISUAL_ROOTSor the roots passed by the caller. - Supported formats: PNG, JPEG, WebP, GIF, BMP; maximum 25 MiB each.
- Provider execution receives staged copies in an otherwise empty temporary directory. Image text is treated as untrusted data, never as instructions.
- Input evidence includes SHA-256 and byte size.
TARGETED_WITNESSrequires exactly one image and a non-empty question.COMPARE_PREFILTERrequires exactly two images.
Runtime identity for comparison
Multi-image behavior has changed across agy releases. Comparison therefore
fails closed unless the binary identity is known:
- Windows
agy1.1.9 is recognized by its tested SHA-256. - Other builds can be pinned with
AGY_VISUAL_EXPECTED_SHA256after independent verification. AGY_VISUAL_ALLOW_UNVERIFIED_COMPARE=1is an explicit escape hatch. The output still reportsOBSERVED_NOT_PINNED; do not treat it as reproducible.
Version probes run with AGY auto-update disabled and the executable is hashed again after the probe. If a configured/known hash does not match, or the binary changes during probing, every provider operation is blocked before egress. The unverified-compare escape hatch never overrides an explicit identity mismatch.
AGY_BIN selects an explicit executable. AGY_VISUAL_MODEL overrides the
default gemini-3.6-flash-low. Provider model availability and quota can change.
Security
Do not attach secret-bearing screenshots unless the selected external provider is authorized to receive them. Never promote model output to a deterministic gate merely because the call returned successfully.
See SECURITY.md.
Observed pre-release checks and their evidence limits are recorded in docs/VALIDATION.md.
License
MIT. This project is independent and is not endorsed by Google, ModLens, or OpenAI. ModLens remains under its own MIT license and is used only through its documented CLI interface.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.