Bug reporting for any coding agent

Your users find the bugs.
Your agent fixes them.

One script tag adds a Report a bug button to your app. Your coding agent gets the element the user pointed at, the error it threw, the failing request and the steps.

Paste a prompt that calls get_issue_context, then mark_issue_resolved only after you have reviewed the fix. No agent yet? Reports land in your inbox or tracker.

Michaela Drake
“We cut our ‘cannot reproduce’ rate by 80%.”
Michaela Drake, QA Engineer, Shed Collective
<script asyncsrc="https://app.snagrelay.com/widget/load/KEY"></script>

Using Lovable, Bolt, v0 or Replit?

  • Free plan, no card
  • Users install nothing
  • localhost → production
Example. A shopper clicks Apply coupon and the order total does not change. The picker outlines the button in red because it threw a TypeError right after the click. SnagRelay sends the button, the error, the coupon request and the steps. A coding agent reads the report over MCP, edits lib/coupons.ts to read the total from the new response shape, and after review marks the ticket fixed.

A shopper clicks Apply. The total doesn’t change.

shop.example/checkout

Checkout

Coupon

SAVE10Apply coupon
Total€128.00

Wool coat

€120.00

Gift wrap

€8.00

Designing or testing? Visual bug reporting →Shipping a React Native app? SnagRelay for mobile →Building client sites? WordPress plugin →

Cursor Claude Code Codex VS Code Next.js Lovable Bolt v0 Vite Linear GitHub Jira

The gap

Your IDE’s browser sees your session. The bug happened in someone else’s.

Your agent can read the repo, run tests and change code. But what reaches it from a real user is a sentence and a cropped screenshot.

Today · what arrives

From a shopper · via support

“The coupon thing doesn’t work?? Tried 3 times.”

IMG_4021.png · cropped

  • Which button?
  • Console?
  • Network?
  • Steps?
  • Browser?

Your agent

I can’t reproduce this locally. Which button? Was there a console error? What was in the cart?

Back to the user. Wait. Ask again. The bug sits.

With SnagRelay · same bug

SHOP-142 · “Apply does nothing”

Element
Checkout › “Apply coupon” button
Error
TypeError: reading ‘total’ · 180 ms after the click
Source
lib/coupons.ts:27
Request
POST /api/coupons/apply → 200
Steps
Open /checkout → enter SAVE10 → Apply
Replay
The 60 seconds before the report

Your agent

Reproduced. The API now nests the total under order. Fixing lib/coupons.ts:27.

One report. No follow-up questions.

How it works

Three steps.
Two aren’t yours.

You add one line once. Your users report. Your agent does the rest.

  1. 01 · you, once

    Add the snippet

    <script async
    src="https://app.snagrelay.com/widget/load/KEY"></script>

    Next.js, Vite, Lovable, Bolt, WordPress, plain HTML.

  2. 02 · your user

    They point at it

    SAVE10Apply couponErrorTypeError · “Apply coupon” button
    + replay, console, networkSend

    Whatever just failed is already outlined in red. No extension, no account — everything else is captured for them.

  3. 03 · your agent

    It fixes it

    › Look up SHOP-142 with get_issue_context. After I review the fix, call mark_issue_resolved with a one-sentence note for the reporter.

    ↳ get_issue_context

    ↳ edit lib/coupons.ts

    ↳ mark_issue_resolved

    You paste the prompt. The agent pulls the evidence over MCP and proposes the change. After you review it, the reporter hears it’s fixed.

What your agent gets

Evidence, not screenshots.

The element’s name from the page — the button text, not a CSS selector — the screenshot with their highlight or arrow, console errors, the failing request and response, and the steps. Replay stays a separate watch link. If there is no screenshot, the report still stands.

ElementScreenshotConsoleNetworkReproReplay
name       Checkout › “Apply coupon” button
page       /checkout · 1280×800

errors tied to it
✕ TypeError · 180 ms after the click

Redacted in the browser: passwords, tokens, cookies, auth headers and emails never leave the page.

MCP server

Your agent takes it from here.

Connect once, then paste a prompt. Your agent calls the tools below. Sign in once in your browser, no token to copy.

  • get_issue_contextEverything about a bug, by key: SHOP-142, #88 or a URL
  • get_related_historySimilar past bugs and the changes that fixed them
  • find_issuesSearch and list open bugs for this project
  • get_issue_payloadOne full request or response body, only when it needs it
  • mark_issue_resolvedClose the bug and tell the person who reported it
Connect your agent →
https://mcp.snagrelay.com/v1

Add this URL as a remote MCP server, then click Allow. Paste a prompt that tells the agent to call get_issue_context, then mark_issue_resolved only after you have reviewed the fix.

Your agent
  1. Look up SHOP-142 with get_issue_context. After I review the fix, call mark_issue_resolved with a one-sentence note for the reporter.
  2. get_issue_contextSHOP-142
  3. The shopper clicked Checkout › “Apply coupon” button. POST /api/coupons/apply returned 200, then 180 ms later TypeError: reading ‘total’ at lib/coupons.ts:27. The response now nests the total under order.
  4. readlib/coupons.ts
  5. lib/coupons.ts- setTotal(res.cart.total)+ setTotal(res.order.total)
  6. Same steps now update the total to €115.20. Ready for review.
  7. mark_issue_resolvedSHOP-142 · ticket commented · reporter emailed

Close the loop

Every fix makes the next one faster.

SnagRelay keeps what your agent learned: which reports were the same bug, and which change fixed it.

  • 01Repeat reports are groupedFive users hitting the same bug are linked, so your agent sees one problem with five reporters. Nothing is closed for you.
  • 02Your agent sees what fixed it last timeget_related_history returns similar past bugs and the change that closed them.
  • 03The reporter hears backWhen the agent marks it resolved, the person who reported it gets a plain-language email.

Example

The coupon bug you reported is fixed

Northwind · now

Thanks, Maria — applying a coupon now updates your total correctly. It was live 40 minutes after you told us.

Reported 10:02

Agent 10:09

Fixed 10:42

Where it fits

Built for the bugs other people find.

Use your IDE’s browser for your own testing. Use SnagRelay for everyone else.

SnagRelayIDE browser / DevTools MCPExtension-based recorders
Who can reportAnyone, any deviceOnly you, in your IDEPeople with the extension
Catches a bug you weren’t there for
Full request + response bodiesVaries
Hands off to your agent (MCP)Most do
Remembers what fixed it before
Tells the reporter it’s fixed
Price for unlimited reportersFrom $0IncludedPer creator

Based on public documentation, October 2026.

FAQ

Questions developers ask first.

How is this different from my IDE’s browser or Chrome DevTools MCP?
Those see your own session on your machine — great for testing what you just built. SnagRelay captures the session of whoever hit the bug: a user on their phone, a client on production, a tester on staging, hours before you looked. Use both.
Which agents does it work with?
Cursor, Claude Code, Codex and VS Code agent mode, plus any other client that supports remote MCP servers with browser sign-in. One server URL. Your agent opens a SnagRelay page, you click Allow, and there is no token to copy.
What exactly does my agent receive?
get_issue_context returns the user’s description, the element they pointed at with the errors tied to it, AI repro steps, console errors with file and line, failed requests with full request and response bodies, environment, a screenshot and a replay link. Bodies can be fetched one at a time with get_issue_payload to keep context small.
Do I need to change my code for the element picker?
No. The picker names elements from what is already on the page — the accessible name, the role and the section around it — and outlines anything that just failed. One script tag, no build plugin.
What about privacy?
Passwords, tokens, cookies, authorization headers and emails are redacted in the browser before anything is sent. Nothing leaves the page until someone presses Send. History is kept 7 days on Free and up to a year on paid plans.
Do I need a coding agent?
No. Reports land in the SnagRelay inbox or in your tracker, and you or your team fix them from the evidence. Connect an agent whenever you want it to read and fix reports for you.
Do I need Jira or Linear?
No. Bugs land in a simple SnagRelay inbox and your agent reads them from there. Connect Linear, GitHub Issues, Jira, GitLab, Trello or Azure DevOps whenever you want.
Does it work with Lovable, Bolt, v0 or plain Next.js?
Yes. It’s one script tag (or an npm package), so it works on any web app — localhost, preview deployments and production.

Why trust it

What a QA team saw after switching.

We switched from Usersnap primarily to cut costs, but were also impressed with the quality of the reports and level of detail the platform provides our devs.
Michaela Drake
Michaela Drake
QA Engineer, Shed Collective

80%

cut in the “cannot reproduce” rate

Reported by Michaela Drake, Shed Collective

Igor Yussupov

Igor Yussupov

Founder and developer

I use SnagRelay in my own AI coding flow. My agent gets the element, the error and the failing request, not “it’s broken”.

Reply to any email from SnagRelay and it reaches me.

@igoryussupov

Ship it.
Let your users
find the bugs.

Free to start, no card. Set up in two minutes.