Works with Claude Code · Cursor · Windsurf · ChatGPT

Feedback your AI agent can actually fix.

Drop one script tag on your site. Users report bugs with annotated screenshots and screen recordings — and your coding agent reads, triages, and fixes them over MCP. You review the PR.

One script tag · < 30KB widget · 7-day trial · 26 MCP tools

The widget on this page is the product. Try it →

28.5KB

widget, gzipped — measured, not rounded

26

MCP tools your agent can call

6

platforms: Web, React, iOS, Android, Flutter, MCP

The loop

User to agent to fixed, in three steps

01

Embed

One script tag. Shadow DOM isolation means it can't break your styles and your styles can't break it.

02

Collect

Users annotate screenshots, record their screen, or file feature requests. Console-free bug reports with URL, browser, and metadata attached automatically.

03

Fix — with your agent

Run claude and say “check my feedback.” Your agent lists open reports, looks at the screenshot, reproduces the bug, ships the fix, and posts a fix note that emails the reporter. You never left the terminal.

Live demo

Don’t watch a video. File a bug right now.

The widget in the bottom-right corner of this page is the real product. Click it, drag a box around anything below, draw an arrow, and submit — then look at what your agent would see.

What your user sees

yoursite.com/checkout

Your checkout page

A simulated page so the screenshot tool has something to capture. Try the feedback button in the corner — circle this text, draw an arrow, submit.

Place order

What your agent sees

get_feedback("FB-42")MCP
{
  "reference": "FB-42",
  "type": "bug_report",
  "severity": "high",
  "status": "new",
  "title": "Checkout button overlaps
    the cart total on my phone",
  "page_url": "https://yoursite.com/checkout",
  "device": {
    "type": "mobile",
    "viewport": "393x852",
    "user_agent": "Safari iOS 18"
  },
  "attachments": [{
    "kind": "screenshot",
    "annotated": true,
    "thumbnail": "…768px token-efficient JPEG"
  }],
  "captured_js_errors": [
    "TypeError: Cannot read properties
     of undefined (reading 'total')"
  ]
}

Illustrative response — annotated screenshots ship as 768px thumbnails so vision models read them cheaply.

Everything captured

Bug reports that arrive ready to fix

Screenshot capture and annotation

Users drag a box around the problem or capture the full page, then mark it up with pen, rectangle, arrow, and text tools in six colors — with undo. Cross-origin images are proxied server-side so screenshots never come out blank.

FB-42 · screenshot-annotated.png

URL, viewport, device, and the last 10 JS errors attached automatically.

Screen recording → AI-readable GIF

Screen recordings, auto-converted to GIF — so multimodal agents can literally watch the bug happen. Countdown, PiP timer, preview before submit.

Feature requests with public voting

Requests flow into a public roadmap where users vote and comment. Your agent runs demand analysis to see what’s trending before you plan the sprint.

Mobile crashes and session replays

iOS, Android, and Flutter SDKs with shake-to-report, fingerprint-grouped crash reports, and privacy-masked session replays linked to each crash.

Two-way GitHub forwarding

Forward feedback to GitHub issues with per-type labels. Resolving the feedback closes the issue — and closing the issue resolves the feedback.

Shadow DOM isolation, under 30KB

Vanilla JS in a closed Shadow DOM — immune to your CSS, invisible to your bundle. 28.5KB gzipped, loaded lazily, removed cleanly.

list_feedback
get_feedback
update_feedback_status
create_feedback
list_sites
post_fix_notes
update_feedback_type
delete_feedback
list_feature_requests
get_feature_request
create_feature_request
update_feature_request_status
analyze_demand
get_github_issue_url
forward_to_github
list_pending_github_forwards
restore_feedback
update_feedback_severity
list_fix_notes
get_activity
comment_on_feature_request
bulk_update_feedback_status
bulk_delete_feedback
list_crashes
get_crash
get_replay

MCP server

Your users file the bug. Your agent closes it.

26 MCP tools over remote OAuth — no server to host, no API keys to paste. Feedback, feature-request demand analysis, crash reports, session replays, and GitHub forwarding, all readable and writable by Claude Code, Cursor, or any MCP client.

$ claude mcp add --transport http mcpfeedback https://mcpfeedback.com/api/mcp
Claude CodeCursorWindsurfChatGPT
Connect your agent

Embedded support portal

Grow the widget into a support portal inside your product

Signed-in customers get request history, threaded replies, and reopen — no separate helpdesk to build, no second login for your users.

  • Automatically identify signed-in customers — no email field, no duplicate accounts
  • Every customer gets a private history of requests, replies, and resolutions
  • Org admins see organization-wide requests without crossing tenant boundaries
  • Embeds in any SaaS product with JavaScript or React

Support & feedback

Your requests

Org admin

Invoice export fails

In progress

REQ-1042 · updated 12 min ago

Add custom booking hours

Resolved

REQ-1031 · 3 replies · verified request

Dark mode for the dashboard

Reopened

REQ-1018 · reopened by customer

Every surface you ship

Pricing

$9.99per site / month

Everything included. Unlimited team members. Add a site, pay for a site — that’s the whole model.

See pricing

FAQ

Questions, answered honestly

More detail on billing and trials lives on the pricing page.

Will the widget slow my site down?

No. It's a single 28.5KB gzipped JavaScript file with zero dependencies, loaded lazily after your page. It renders inside a closed Shadow DOM, so it can't touch your styles or your bundle.

What does my AI agent actually get?

Your agent connects over MCP (remote OAuth, no keys to paste) and gets 26 tools: it can list and read feedback with annotated screenshots as token-efficient thumbnails, watch screen recordings as GIFs, read crash reports and session replays, update statuses, forward issues to GitHub, analyze feature-request demand, and post fix notes that email the reporter.

Do I need a credit card to try it?

No. The trial is 7 days, account-level, and requires no card. Your widget keeps collecting through a grace period even if the trial lapses, and your data is kept if you don't convert.

What counts as a site?

A site is one registered domain with its own widget key. Pricing is per site, not per seat — your whole team, including contractors, is included at no extra cost.

Is there a submission limit?

Each site includes a fair-use limit of 1000 feedback submissions per month. That's a lot of bug reports for a typical site — and if you're regularly hitting it, talk to us.

What happens to my users' data?

Screenshots and recordings are stored privately with access controlled per organization. The widget validates its origin against your registered domain, uploads are scoped by short-lived tokens, and mobile SDKs ship privacy masking with mask-all as the default tier.

Ship the fix before the standup.

Free for 7 days. No credit card. Widget live in five minutes.