BugTape demo
ai.bugtape/bugtape-demobugtape.aistreamable-httpv1.0.0Scanned
Read-only sample shop with captured bug evidence. No account or key needed.
14 tools: 1 change things and 13 only read.
- Reads private data · 2
- Reads text others write · 1
- Can send data out · 0
- 2 findings
Anlyon alternative
1 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
14 tools
Changes things 1Claude Code: ask
list_recommended_criticalStart here.1 finding
Why it is in this group
- The name "list_recommended_critical" says "list": a word for reading.
- The description's first verb is "start": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "list_recommended_critical" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "list_recommended_critical" says "list": a word for reading.
Description, as the server wrote it Start here. Returns `sentToYou` first: bugs a person sent you with "Send to agent" (fix these first), then the prefiltered agent inbox: one row per signature group, new unique issues scored critical/high (or regressions). `id` is the best qualifying member. `member_id_sample` is at most 8 member ids; `instance_count` is the full count and `instances_path` lists the rest. Use this instead of list_bugs for what to work on. Diagnostic, silenced, and agent-acked rows are excluded.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 13Show 13 read-only tools
get_bugGet full details of a bug including title, description, severity, status, reporters, AI summary, environment info, report count, affected_user_count, repeat_user_count, and user_sp…No findings
Why it is in this group
- The name "get_bug" says "get": a word for reading.
Description, as the server wrote it Get full details of a bug including title, description, severity, status, reporters, AI summary, environment info, report count, affected_user_count, repeat_user_count, and user_spread (user_specific vs widespread). Use get_bug_users for the per-user roster.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_bug_eventsGet session events for a bug (DOM, network, console, clicks, errors).No findings
Why it is in this group
- The name "get_bug_events" says "get": a word for reading.
Description, as the server wrote it Get session events for a bug (DOM, network, console, clicks, errors). Prefer passing occurrenceId so events are not mixed across captures.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_bug_historyGet the full audit trail of status/severity changes and assignments on a bug, including who changed what and when.No findings
Why it is in this group
- The name "get_bug_history" says "get": a word for reading.
Description, as the server wrote it Get the full audit trail of status/severity changes and assignments on a bug, including who changed what and when.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_bug_occurrencesList the individual occurrences grouped under a bug.No findings
Why it is in this group
- The name "get_bug_occurrences" says "get": a word for reading.
Description, as the server wrote it List the individual occurrences grouped under a bug. Use this to see which users, sessions, releases, or environments were affected.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_bug_usersWho hit this bug: one row per affected end user (the app's identify() userId, else reporter email, else an anonymous IP-hash key) with firstSeen, lastSeen, occurrenceCount, platfor…Reads private dataReads text others writeNo findings
Why it is in this group
- The name "get_bug_users" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "email": it reads mail.
- untrusted-inputThe description's first sentence says "email": it reads inbound email, which other people can write.
Description, as the server wrote it Who hit this bug: one row per affected end user (the app's identify() userId, else reporter email, else an anonymous IP-hash key) with firstSeen, lastSeen, occurrenceCount, platforms (web/ios/…), lastRelease and lastOccurrenceId. Pass a row's userKey to get_user_timeline to see everything that user experienced across bugs, or to get_repro_context via occurrenceId=lastOccurrenceId.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_current_orgReturn the credential workspace.Reads private data1 finding
Why it is in this group
- The name "get_current_org" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "return" and "credential": it reads secrets.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "Return the credential workspace. Agent PATs resolve only thei..."
Description, as the server wrote it Return the credential workspace. Agent PATs resolve only their own workspace; human sessions use BUGTAPE_ORG_ID.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_live_occurrencesGet the most recent occurrences across the organization.No findings
Why it is in this group
- The name "get_live_occurrences" says "get": a word for reading.
Description, as the server wrote it Get the most recent occurrences across the organization. Useful for live monitoring and tester workflows. Honors deliveryFeed (tool arg, else PAT / project).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_project_statsGet aggregate statistics for a project (server-computed over bugs in the elected delivery feed, not a sample): counts by status and severity, daily timeline, top unresolved bugs by…No findings
Why it is in this group
- The name "get_project_stats" says "get": a word for reading.
Description, as the server wrote it Get aggregate statistics for a project (server-computed over bugs in the elected delivery feed, not a sample): counts by status and severity, daily timeline, top unresolved bugs by report count, MTTR, health score, and previous-period comparison.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_repro_contextBuild an agent-consumable reproduction pack: evidence (timeline, status, env) separate from inference (AI summary).No findings
Why it is in this group
- The name "get_repro_context" says "get": a word for reading.
Description, as the server wrote it Build an agent-consumable reproduction pack: evidence (timeline, status, env) separate from inference (AI summary). Prefer occurrenceId so sessions are not interleaved. Not raw rrweb. Same pack as resources/read bugtape://bugs/{bugId}/repro.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_similar_bugsFind other bugs similar to the given bug, ranked by similarity score (0-100, fingerprint + title overlap).No findings
Why it is in this group
- The name "get_similar_bugs" says "get": a word for reading.
Description, as the server wrote it Find other bugs similar to the given bug, ranked by similarity score (0-100, fingerprint + title overlap). Returns up to 5 matches. Useful before merging or triaging.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_bug_groupsGrouped triage view: bugs collapsed across pages by error signature (one group per distinct error within a project, even when dedup created many bug rows).No findings
Why it is in this group
- The name "list_bug_groups" says "list": a word for reading.
Description, as the server wrote it Grouped triage view: bugs collapsed across pages by error signature (one group per distinct error within a project, even when dedup created many bug rows). Each group includes projectId + groupKey (the stable group identity), a representative sampleBugId/sampleTitle, instanceCount, occurrenceCount, sessionCount, userCount, maxSeverity, topStatus, signalReason (why the classifier flagged it), browsers/oses, platforms (web/ios/android/react-native/flutter/server — one issue can span several), and anyRegression. Pass both projectId and groupKey as one groupRefs entry to bulk_update_bugs. Legacy groupKeys are accepted only when unique across the organization and are rejected when ambiguous. Prefer this over list_bugs for triage.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_bugsList bugs for the organization (flat, one row per deduplicated report).No findings
Why it is in this group
- The name "list_bugs" says "list": a word for reading.
Description, as the server wrote it List bugs for the organization (flat, one row per deduplicated report). Supports filtering by status, severity, project, platform, deliveryFeed (all | urgent_critical | ui_ux), and text search. Each row includes affected_user_count, repeat_user_count, and user_spread (user_specific vs widespread). Diagnostic-class signals are excluded by default. Prefer list_bug_groups for grouped triage.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_projectsList all projects in the organization with their bug counts.No findings
Why it is in this group
- The name "list_projects" says "list": a word for reading.
Description, as the server wrote it List all projects in the organization with their bug counts.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.
- Reads private data2
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write1
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
The server marks "list_recommended_critical" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "list_recommended_critical" says "list": a word for reading.
- Infoget_current_org
The description mentions "credential".
What this check looks forMatched text
description: "Return the credential workspace. Agent PATs resolve only thei..."
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http bugtape-demo https://app.bugtape.ai/demo/mcpclaude mcp add --transport http bugtape-demo https://app.bugtape.ai/demo/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__bugtape-demo__list_bugs",
"mcp__bugtape-demo__get_bug",
"mcp__bugtape-demo__get_bug_events",
"mcp__bugtape-demo__get_repro_context",
"mcp__bugtape-demo__list_projects",
"mcp__bugtape-demo__get_project_stats",
"mcp__bugtape-demo__get_bug_occurrences",
"mcp__bugtape-demo__get_bug_users",
"mcp__bugtape-demo__get_live_occurrences",
"mcp__bugtape-demo__get_current_org",
"mcp__bugtape-demo__get_bug_history",
"mcp__bugtape-demo__get_similar_bugs",
"mcp__bugtape-demo__list_bug_groups"
],
"ask": [
"mcp__bugtape-demo__list_recommended_critical"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as bugtape-demo. Review it before you use it.
Capability tags behind 2 rules
- mcp__bugtape-demo__get_bug_users private-data, untrusted-input
- mcp__bugtape-demo__get_current_org private-data
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/ai.bugtape/bugtape-demo/verify?hash=90441cb6be6ce8e4a24bdb3ddeef6722d4202ae68bc78c55d6f6d7d5fbd9f39f" | jq -e '.changed == false'Pinned hash 90441cb6be6c, from Oct 26, 2026, 21:17 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/ai.bugtape/bugtape-demo/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/ai.bugtape/bugtape-demo)Source: MCP Registry. Synced Oct 26, 2026, 21:17 UTC.