Documentation
MCP / Connect AI
Connect Claude Code, Cursor or VS Code to your reports with the Wutbug MCP server so your assistant can investigate and fix bugs.
Wutbug includes an MCP (Model Context Protocol) server. With it, your coding assistant can list reports, read the console with stack traces already translated to your code, inspect failed requests and mark the report as resolved when the fix is done.
Without MCP: paste the link
You don't need to install anything for an AI to understand a report:
- Paste the shared link (
…/share/<token>) into Claude, ChatGPT, Cursor or Perplexity. When an assistant opens the link, Wutbug responds with a text (Markdown) version of the report instead of the interactive page. It's also always available at…/share/<token>/md. - "Copy for AI": in the report (dashboard) it copies the full report with an instruction to fix it; on the shared page it copies only the context.
The text includes a timeline with the key events in order (user clicks, errors, failed or slow requests, frustration clicks), the console, the network (with the bodies of failed responses), the device, the metadata and the link to the screenshot. Sensitive data is already masked.
0:01.0 USER Clicked “Pay” ×3
0:01.5 NET POST /api/checkout → 500 in 1200 ms
0:02.0 ERROR (uncaught) TypeError: Cannot read 'total'
0:08.0 SENT user opened the report form1. Create a token
In the dashboard, open Connect AI and create a personal token. It starts with wbt_ and is shown only once: copy it right then.
The token acts as you: it sees the projects of the teams you belong to, and if you leave a team, it loses that access immediately. We only store a hash; you can revoke it any time from the same page.
2. Connect your client
The server URL is the API URL followed by /mcp, for example https://api.wutbug.dev/mcp. The Connect AI page shows the commands with your URL and token.
Claude Code
claude mcp add --transport http wutbug https://api.wutbug.dev/mcp \
--header "Authorization: Bearer wbt_your_token"Cursor
Add it to .cursor/mcp.json in your project (or to ~/.cursor/mcp.json for all projects):
{
"mcpServers": {
"wutbug": {
"url": "https://api.wutbug.dev/mcp",
"headers": { "Authorization": "Bearer wbt_your_token" }
}
}
}VS Code (Copilot in agent mode)
{
"servers": {
"wutbug": {
"type": "http",
"url": "https://api.wutbug.dev/mcp",
"headers": { "Authorization": "Bearer wbt_your_token" }
}
}
}Other clients
Any client with HTTP (streamable) transport works:
URL: https://api.wutbug.dev/mcp
Header: Authorization: Bearer wbt_your_token3. Ask it to fix a bug
Fix Wutbug report WB-128.You can also pass the report link (from the dashboard or the shared one) instead of the code: get_report accepts all three.
The server includes the fix-report prompt, which guides the assistant: read the report, find the cause in your repository, make the minimal fix with a test, summarize it and mark the report as resolved (it asks you before notifying the reporter). In Claude Code it appears as /mcp__wutbug__fix-report.
Tools
A report is identified by its code (WB-20, or just 20) or by its UUID.
list_projects
Projects you have access to, with their team, public key and id. No parameters.
list_reports
Reports, newest first. By default, the open ones across all your projects.
| Parameter | Type | Default | Description |
|---|---|---|---|
project | string | — | Project name, id or public key. Without it: all projects. |
status | open | all | new | triaged | in_progress | resolved | closed | open | open = new, triaged or in progress. |
device | desktop | mobile | tablet | — | Filter by device type. |
query | string | — | Text to search in the title, description and page URL. |
since_days | number (1–365) | — | Only the last N days. |
limit | number (1–50) | 20 | Maximum number of results. |
get_report
Everything needed to debug a report: what the person said, the steps they took, console errors with original stack traces and the surrounding source code (if you uploaded source maps), failed requests, the device and environment, and the AI summary if there is one.
| Parameter | Type | Description |
|---|---|---|
report | string | Report code or UUID. |
get_console_logs
Console entries for the report (the 2 minutes before it was sent), with translated stack traces when source maps are available.
| Parameter | Type | Default | Description |
|---|---|---|---|
report | string | — | Report code or UUID. |
level | error | warn | all | all | warn includes errors. |
search | string | — | Text to search for. |
limit | number (1–300) | 100 | Maximum number of results. |
get_network_requests
The report's fetch/XHR requests with status, timings and bodies (already masked).
| Parameter | Type | Default | Description |
|---|---|---|---|
report | string | — | Report code or UUID. |
failed_only | boolean | false | Only failed requests (status 0, 4xx, 5xx or network error). |
url_contains | string | — | Filter by URL. |
include_bodies | boolean | true | Include request and response bodies. |
limit | number (1–200) | 50 | Maximum number of results. |
update_report_status
Moves a report through the workflow. It's the only tool that modifies data.
| Parameter | Type | Default | Description |
|---|---|---|---|
report | string | — | Report code or UUID. |
status | triaged | in_progress | resolved | closed | — | New status. |
note | string | — | What was fixed. Shown in the dashboard and in the email to the reporter. |
notify_reporter | boolean | false | Sends an email to the reporter (only if the project allows it and they left their email). |
include_group | boolean | false | Also resolves the other reports grouped as the same problem. |
Privacy
The assistant receives the same data you see in the dashboard, already masked in the user's browser. Keep in mind that this data goes to the provider of the model your assistant uses, under your agreement with that provider.