Visual feedback for AI coding agents
Turn visual intent into context your agent can act on
Coding agents such as Claude Code or Codex are quick at changing code and poor at guessing what a reviewer meant. Loopa gives them the page, the element, the evidence and the likely source location, in one authorized batch, and brings their results back for human review.
Annotation to agent
The gap
A screenshot and a sentence are not a spec
Pasting a screenshot into an agent chat drops the route, the element, the viewport and the build. The agent fills the gaps by searching for visible text and picking the first plausible match.
Prompt in a chat
- Which of the three pricing buttons?
- Which mobile width?
- Which component, and on which commit?
Loopa annotation (simplified)
- instruction
- Make “Start free trial” the primary action; it currently looks secondary.
- route
- /pricing · captured at 390 px
- element
- button “Start free trial”, second plan card
- screenshot
- Capture screenshot with the element region
- rendered by
- components/pricing/plan-card.tsx:35:7candidate · build matches
Vague prompt vs. annotation
What the agent receives
Everything about one comment, field by field
Each annotation reaches the agent as structured data, together with its uncertainty. Text taken from the captured page is marked as untrusted input, so instructions hidden in page content are not mistaken for yours.
- Reviewer instruction and thread
- Route and capture viewport
- DOM anchor: element or point
- Full-page capture screenshot
- Captured HTML, in chunks
- Render and content source candidates
- Registered build commit
- Mapping state and reasons
Inside an annotation
Many routes, one job
Batches
Feedback from several pages, implemented in one run
A header change on the homepage, a pricing card and a checkout label often touch the same components. Implementing them one comment at a time means repeated context-gathering and conflicting edits.
In Loopa you freeze related comments from any number of routes into one batch. The agent sees the whole set, plans the change once and reports back on every item.
Authorized handoff
Your agent connects over MCP, with your permission
Loopa exposes feedback through an MCP endpoint protected by OAuth. You approve the connection once, and you authorize each batch for exactly one run. The agent works in your checkout with the repository access you already gave it; Loopa does not run code or touch your repository.
MCP access on its own is common among feedback tools. What Loopa adds is what travels through it: Next.js source candidates, frozen multi-page batches and a review step that the agent cannot skip.
Authorized handoff
Read scope
Projects, annotations, batches, captures and evidence for your own projects.
Report scope
Run state, per-item outcomes and checks, only on batches you authorized.
Nothing else
No tool can authorize a batch, verify feedback, merge or deploy.
Implementation and reporting
What a run looks like from the agent's side
A run is a short, recorded sequence of tool calls. The agent claims the authorized run, reads the batch, keeps its lease alive while it works on a branch, and reports an outcome for every item plus the checks it ran.
implementedblockedneeds_clarificationnot_attempted
claim_run
Uses your one-run authorization for the batch. It cannot start an agent by itself.
get_batch
Reads the frozen items, repository and base commit.
get_annotation
Reads each item's capture, element, screenshot and source evidence, including what is uncertain.
heartbeat_run
Keeps the run's lease alive while the agent works.
report_item_result
Records an outcome per item. It never marks feedback as verified.
report_run_check
Records checks such as typecheck, tests or build as passed, failed, skipped or unavailable.
finish_run
Closes the run with its branch and result commit.
Results meet review
Human review
The agent reports. You decide.
Results appear next to the original comments with the result commit and checks. You capture the changed build, compare it with the original evidence and accept each item or reopen it with a reason.
Reopened items return to the feedback queue with their history attached, ready for the next batch.
Give your agent better feedback
Leave a few comments on a captured page, freeze them into a batch and see what your agent can do with the context.