Skip to content
Loopa

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.

agents-heroMotion slot

Annotation to agent

Visual intent becomes implementation context.

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

[screenshot.png] the button on pricing looks off, make it more prominent and fix the spacing on mobile
  • 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
agents-contextMotion slot

Vague prompt vs. annotation

A screenshot in chat drops most of what the agent needs.

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
agents-packetMotion slot

Inside an annotation

Agents receive structured evidence, including what is unknown.
agents-multi-pageMotion slot

Many routes, one job

Related feedback is implemented together, once.

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.

agents-handoffMotion slot

Authorized handoff

Your agent does the work in your checkout; Loopa supplies context and records results.

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

  1. claim_run

    Uses your one-run authorization for the batch. It cannot start an agent by itself.

  2. get_batch

    Reads the frozen items, repository and base commit.

  3. get_annotation

    Reads each item's capture, element, screenshot and source evidence, including what is uncertain.

  4. heartbeat_run

    Keeps the run's lease alive while the agent works.

  5. report_item_result

    Records an outcome per item. It never marks feedback as verified.

  6. report_run_check

    Records checks such as typecheck, tests or build as passed, failed, skipped or unavailable.

  7. finish_run

    Closes the run with its branch and result commit.

agents-reviewMotion slot

Results meet review

Agent-reported results are inputs to review, not approvals.

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.