Visual Intent Layer

io.github.willa-codePublished by GitHub account willa-codev0.4.0Updated Oct 24, 2026

Point at visible targets in an agent-built interface, and deliver grounded Annotations.

VerifiedSTDIODesktop onlyBrowser AutomationDeveloper Tools

Overview

AI-generated overview

A local MCP server and browser review surface for pointing at elements in saved HTML pages or local web apps and delivering grounded annotations to an agent.

What you can do
Point, drag or box visible targets in a browser-rendered interface instead of describing their location in prose, and group targets into one annotation with optional reference images. Track unsent and delivered annotations together with their revision and resolution state. Review results in the browser and decide each annotation by hand. Keep review data on the local machine. The package also offers a local CLI to open a review for an HTML file or a local app URL, or to run only the local service.
When to use it
Useful when you want an agent to change a saved HTML document or a local web app and prefer to show it exactly which visible elements you mean, then review and resolve each annotation yourself before it is acted on.
Requirements
Runs as a local stdio process via npx, so Node.js 20 or newer is needed. A browser must be present on the same machine, since the server launches it and binds a loopback port. It must run on the machine where you view the screen; containers, remote hosts and cloud agents cannot display the review surface. No hosted account or API key is required.
Before you install
Review data is written to a data directory under the home folder by default, and uninstalling the package does not delete it; remove the directory only when you want the reviews gone. The server launches a browser and binds a loopback port on your machine. Only saved HTML documents and local web apps are supported; mobile builds, native windows, design files and PDFs are out of scope.

Installation

In SourceWeft

  1. Open Visual Intent Layer in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Visual Intent Layer

Point at a browser-rendered interface, describe what should change, and let an agent work from that precise visual context. Visual Intent Layer is a local MCP server and Review Surface for saved HTML documents and local web apps.

About

hello world! this project is a testbed for me to experience new/random/trending stuff! fyi on what i was testing:

Key features

  • Direct pointing. Point, drag, or box visible targets instead of describing their location in prose.
  • Annotations with context. Group targets into one Annotation and attach reference images when useful.
  • Delivery state you can read. Keep unsent and delivered Annotations together with their revision and resolution state.
  • Human judgement. Review the result in a browser and decide each Annotation by hand.
  • Local by default. Keep review data on the local machine.

Mobile builds, native windows, design files, and PDFs are outside the supported surface.

Requirements

  • Node.js 20 or newer
  • A browser on the machine running the server
  • An MCP-capable agent, if you want an agent to use the Review Surface

No hosted account or Rust toolchain is required.

Quickstart

Register the local stdio server with your agent, then restart the agent:

json
{  "mcpServers": {    "visual-intent-layer": {      "command": "npx",      "args": ["-y", "--package", "visual-intent-layer@latest", "visual-intent-mcp"]    }  }}

The server must run on the machine where you look at the screen. It launches a browser there and binds a loopback port. A server in a container, on a remote host, or inside a cloud agent cannot display that machine's Review Surface.

Registry-aware clients can also find the server as io.github.willa-code/visual-intent-layer in the official MCP Registry, which lists where to get it rather than hosting it.

Claude Code
sh
claude mcp add visual-intent-layer -- npx -y --package visual-intent-layer@latest visual-intent-mcp
Codex
sh
codex mcp add visual-intent-layer -- npx -y --package visual-intent-layer@latest visual-intent-mcp
opencode

Run opencode mcp add visual-intent-layer, then provide npx and the package arguments when prompted:

text
-y --package visual-intent-layer@latest visual-intent-mcp
pi

pi does not ship an MCP client. With pi-mcp-adapter installed, add this to the project's .mcp.json (merge it into an existing mcpServers object):

json
{  "mcpServers": {    "visual-intent-layer": {      "command": "npx",      "args": ["-y", "--package", "visual-intent-layer@latest", "visual-intent-mcp"]    }  }}

The same entry can be placed in .pi/mcp.json for a project-only Pi override, or ~/.config/mcp/mcp.json for all projects. The adapter's /mcp setup panel can also create the entry.

Other MCP clients

Use the JSON configuration above, or launch a local stdio server with command npx and arguments -y --package visual-intent-layer@latest visual-intent-mcp.

Start a review without an agent

The package also provides a local CLI:

sh
npx -y --package visual-intent-layer@latest visual-intent open --html ./checkout.htmlnpx -y --package visual-intent-layer@latest visual-intent open --app http://localhost:5173

Each command opens the default browser and prints the review URL. Add --no-open for headless or scripted use. To run only the local service:

sh
npx -y --package visual-intent-layer@latest visual-intent serve --port 3742

The visual-intent command is also available after npm install -g visual-intent-layer.

Data and privacy

The server writes review data to ~/.visual-intent-layer/data by default. It does not write agent configuration. Uninstalling the package does not delete reviews; remove that data directory only when you want to remove them.

Set VISUAL_INTENT_DATA_DIR to choose another data directory. Set VISUAL_INTENT_NO_OPEN=1 to suppress automatic browser opening.

Update and uninstall

@latest is resolved when npx fetches the package, so there is usually nothing to update by hand. pi-mcp-adapter caches the resolved command for 24 hours; delete ~/.pi/agent/mcp-npx-cache.json to force a fresh fetch. Replace @latest with an exact version in the entry to hold a version still, and update a global install with npm install -g visual-intent-layer@latest.

To uninstall, remove the entry with the mechanism you added it with — claude mcp remove visual-intent-layer, codex mcp remove visual-intent-layer, or by editing your client's configuration. docs/guide.md names the file for each client. Uninstalling deletes none of your reviews: they stay in the data directory until you remove it.

Documentation

License

Apache-2.0.

Source: README.md at commit 7d076d4

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

3
  1. v0.4.0LatestSep 20, 2026
  2. v0.3.2Sep 18, 2026
  3. v0.3.0Sep 18, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts