Inputs masked
Typed values are masked and emails, card numbers and tokens are scrubbed. Mark any element with data-bugtape-ignore to leave it out of the replay.
For developers
Add your project key and send a test error. Then open the evidence for that report.
Use the hosted module below, or npm install @bugtape/sdk with a bundler.
BugTape Live · terminal-first debugging
Select an issue in your terminal. Investigate through Claude Code, Codex or Cursor over MCP.
npx -y bugtape liveSIMULATED DATA · storefront / production · no account connection
Only selected issue IDs are handed over.
↑↓ navigate · Space select · S preview · T theme
Simulation only. Nothing is sent. The CLI reads your authorised issues; agents get evidence over MCP.
Get started
Setup shows your bt_live_* capture key once.
Call init once, after your cookie or consent banner allows it.
Name it clearly. Setup confirms arrival and links to the report.
<script type="module">
import { init } from 'https://app.bugtape.ai/bugtape.mjs';
init({ apiKey: 'bt_live_your_key_here' });
</script>Web
The SDK buffers context in memory. An error or user report sends it.
showButton: false and open() from your own link<script type="module">
import { init, identify } from 'https://app.bugtape.ai/bugtape.mjs';
init({
apiKey: 'bt_live_your_key_here',
release: '2026.09.30',
privacy: 'strict', // optional: page text becomes solid blocks
showButton: false, // optional: no floating button
});
identify({ userId: 'u_123' }); // optional: see who a bug reached
</script>Node.js
No dependencies, Node.js 20 and later. The key comes from BUGTAPE_KEY.
onRequestErrorcaptureException and captureMessagenpm install @bugtape/node
import * as bugtape from '@bugtape/node';
bugtape.init({ service: 'api', release: process.env.GIT_SHA });Python
No dependencies, Python 3.9 and later. The key comes from BUGTAPE_KEY.
capture_exception and capture_messagepip install bugtape import bugtape bugtape.init(service="reports", release="2026.09.30")
iOS and macOS
Local Swift package (alpha). iOS 15+ and macOS 12+. No third-party dependencies. Setup provides the package and your installation snippet.
// startBugTape comes from Setup, with your installation IDs.
// Call it after your app has diagnostic consent.
let client = try await startBugTape(diagnosticConsent: true)
let captureID = try await client.report(
title: "Checkout total is wrong", expected: "10", observed: "12", screen: "Checkout"
)Any other sender
Use your project key from any runtime or cron job.
POST /v1/ingest with X-BugTape-Keycurl https://app.bugtape.ai/v1/ingest \
-H "X-BugTape-Key: $BUGTAPE_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Nightly export failed","platform":"server","url":"job://exports/nightly"}'How the data flows
Privacy runs locally. A report sends the captured context.
The browser buffers page events, requests, console and errors in memory. Input masking and strict text masking run before buffering. Server SDKs act when an error happens.
On the user’s device or your server
Uncaught errors, failed or hanging requests after a click, and user reports send context to POST /v1/ingest over HTTPS. X-BugTape-Key authorises capture only, never reads.
HTTPS · capture key
The API checks the key and fingerprints the occurrence. Matching reports join one issue with counts, affected releases and users.
BugTape API · Sydney
Postgres stores issues and events in Sydney. Events expire after 7 days on Free or 30 days on Pro and Prepaid credits.
Postgres · Sydney
Your team uses the console. Agents read the evidence over MCP, limited to the projects and scopes you grant.
Console · MCP
Send new issues, regressions and agent progress (picked up, PR opened) to Slack, email or a webhook.
Slack · email · webhooks
Privacy
Privacy settings run locally, before sending.
Typed values are masked and emails, card numbers and tokens are scrubbed. Mark any element with data-bugtape-ignore to leave it out of the replay.
privacy: 'strict' turns page text into solid blocks (“Anna Smith” → “▇▇▇▇ ▇▇▇▇▇”), drops query strings and never keeps request bodies. Clicks and layout stay.
disableDomRecording: true sends errors and failed requests without a replay.
Before installing on screens with client data, follow the privacy checklist → Security and storage details: Security →
Agents over MCP
Add https://app.bugtape.ai/mcp to your MCP client. Sign in with OAuth where supported, or use a scoped agent token from Settings → Agents. MCP works on every plan. On Free and Prepaid credits, each agent read of captured events costs 2 credits; other reads are free. On Pro, event reads are included.
list_recommended_critical — issues sent to the agent first, then the ranked inboxget_repro_context — report text, timeline, request, console and stackack_bug — “Picked up”, then the pull request linklisten — wakes the agent when a new issue arrivesclaude mcp add --transport http bugtape https://app.bugtape.ai/mcp \ --header "Authorization: Bearer bt_pat_YOUR_TOKEN"
REST API
Base URL https://app.bugtape.ai/v1. Three kinds of credential, each limited to its job.
X-BugTape-Key: bt_live_…Sending reports onlyAuthorization: Bearer bt_pat_…MCP and agent actions, for the projects and scopes you grantAuthorization: Bearer <jwt>Reading and managing issues, team and settingsBuilt with your input
Browse requests, vote or submit a feature for review.
One vote per account. Team ideas say “Proposed by BugTape”. Votes guide priorities; requests do not promise delivery.
Docs
Every page is also served as .md, and /llms.txt lists them for agents.
Key, script tag, first bug.
Every init option, identify and open().
Install, frameworks and redaction. Streamlit cookbook → Streamlit error tracking →
What each platform can send, side by side.
Every field of POST /v1/ingest.
Claude Code, Cursor, Codex. Works on every plan, Free included. Install walkthrough → Connect Cursor → Claude Code →
Setup provides your key and install snippet.
| What it records | Supported browser errors, failed requests, and a short DOM replay with the report. It does not record every visit. |
|---|---|
| No account | npx -y bugtape --help prints the commands and does not sign you in. The live demo stays in the browser. The demo MCP at https://app.bugtape.ai/demo/mcp needs no sign-in. Your own workspace needs one. |
| Price | Free is $0. Prepaid credits are $10 for 2,000 credits. Pro is $29 a month. |
| Not included | Hosted screenshots and voice notes are not stored. Fatal iOS crash capture is not available. |
Yes. npx -y bugtape --help prints the CLI and does not sign you in. The live demo runs in your browser and sends nothing. The demo MCP at https://app.bugtape.ai/demo/mcp needs no sign-in. Your own workspace needs one.
No. It keeps a short buffer in the browser and sends that buffer with a supported error or a user report.