bugAgent

官方

将bugAgent连接到任何兼容MCP的AI客户端。直接从AI编码助手中提交、分类和管理缺陷、功能请求等。无需切换上下文,无需复制粘贴——只需描述问题,bugAgent会处理其余部分。

你可以用 bugAgent MCP 做什么?

  • 提交错误报告 — 让您的助手创建错误报告,并自动分类为19种类型,包括严重性和优先级设置。
  • 列出并筛选报告 — 使用 list_bug_reports 按项目、严重性、状态、类型或搜索文本查询错误,支持分页,最多返回100条结果。
  • 选择下一个要处理的错误 — 让您的助手调用 pick_next_bug 获取团队中优先级最高且未分配的错误(S1→S3,按最早优先)。
  • 原子化认领错误 — 使用 claim_bug 无竞争地将错误状态转为进行中并分配给您的助手,避免重复工作。
  • 管理测试套件和用例 — 创建测试套件、运行回归套件,并列出最近7天内失败的测试用例。

文档

Connect bug Agent to any MCP-compatible AI client.

File, classify, and manage bugs, feature requests, and more directly from your AI coding assistant. No context switching, no copy-paste — just describe the issue and bug Agent handles the rest.

External MCP clients are separate from bug Agent 's dashboard AI Assistant. The dashboard assistant is off by default on every plan and requires explicit workspace enablement; its ai_assistant gate does not disable MCP or integrations. MCP authentication, scopes, workspace/project permissions, and tool-specific entitlements still apply.

Getting Started

bug Agent runs the hosted MCP server so AI clients can create, query, and manage bug reports, feature requests, enhancements, and more through the Model Context Protocol. Clients connect directly to the hosted Streamable HTTP endpoint.

Get your API key

Create a Free account; new workspace owners are taken directly to API-key setup. Returning users can generate a key from Settings → Developers → API Keys.

Configure your AI client

Add bug Agent as an MCP server in your client's config (see setup below).

Start filing bugs

Describe a bug in natural language and bug Agent auto-classifies, enriches, and stores it.

# Create a bug report
"File a bug: Login button is unresponsive on iOS Safari.
Steps: tap login, nothing happens. Expected: navigate to
dashboard. Severity: high."

# bugAgent auto-classifies as UI bug, severity high

# File a feature request
"Feature request: Add dark mode toggle to the
settings page. Users have asked for this in surveys."

# Auto-classified as feature-request, severity medium

Setup

Recommended: hosted Streamable HTTP

Connect directly to https://mcp.bugagent.com/mcp. There is nothing to install or keep running locally. Add your workspace API key as a bearer token:

{
  "mcpServers": {
    "bugagent": {
      "type": "http",
      "url": "https://mcp.bugagent.com/mcp",
      "headers": {
        "Authorization": "Bearer ba_live_YOUR_KEY_HERE"
      }
    }
  }
}

💡

Replace ba_live_YOUR_KEY_HERE with your actual API key from Settings → Developers.

Optional stdio bridge

Use the published bridge only when a client requires stdio and cannot connect to a remote HTTP server. Run it on demand with npx -y bugagent-mcp:

{
  "mcpServers": {
    "bugagent": {
      "command": "npx",
      "args": ["-y", "bugagent-mcp"],
      "env": {
        "BUGAGENT_API_KEY": "ba_live_YOUR_KEY_HERE"
      }
    }
  }
}

Connect to the Server

The bug Agent MCP server is live at https://mcp.bugagent.com/mcp over Streamable HTTP transport. Connect from any of the eight clients below — pick the one that fits your workflow.

For a small copy-ready configuration, scoped-key guidance, and safe starter prompts, use the public MCP quickstart.

🔑

Get your API key first. Sign in to Settings → Developers, click Create API Key, select the scopes your client needs, and copy the value (starts with ba_live_). You’ll only see it once, so paste it somewhere safe. MCP clients only list tools granted by those scopes. The connection examples below use this key; prompts that require an interactive OAuth/session or a paid-plan entitlement are identified separately.

Option 1 — MCP Inspector (Web UI, recommended for first-time testing)

The official Anthropic tool. Spins up a local web UI where you can click through every tool, fill in parameters, and see responses. Zero config, no IDE required.

macOS (Terminal)

npx @modelcontextprotocol/inspector

Windows (PowerShell or CMD)

npx @modelcontextprotocol/inspector

In the browser UI that opens:

  1. Transport Type: select Streamable HTTP
  2. URL: https://mcp.bugagent.com/mcp
  3. Connection Type: select Proxy (the default — the Inspector proxies through a local Node process to bypass browser CORS)
  4. Open Server Settings → Custom Headers and add:
    • Header Name: X-Api-Key
      • Value: ba_live_YOUR_KEY_HERE (no Bearer prefix)
  5. Click Connect. The left panel lists the bug Agent tools allowed by the API key scopes you selected.
  6. Click any tool (e.g. list_bug_reports), fill in parameters, click Run Tool. Response shows on the right.

Prerequisites: MCP Inspector v2 requires Node.js 22.19 or later. Install a current Node.js release from nodejs.org if you don’t have it.

If Inspector returns invalid_client, it is attempting a saved OAuth connection instead of API-key authentication. Remove the saved server (or clear its stored OAuth state), add it again, and use the X-Api-Key custom header above. Do not put a ba_live_ key in an OAuth client_id field.

Option 2 — Claude Desktop (Mac + Windows)

If you use the Claude Desktop app, you can add bug Agent as a permanent MCP server. With a workspace API key, Claude receives only the tools allowed by that key’s scopes. Delegated OAuth exposes the complete interactive catalog.

macOS

  1. Open Claude Desktop → menu bar Claude → Settings → Developer → Edit Config. This opens ~/Library/Application Support/Claude/claude_desktop_config.json.
  2. Add the bug Agent entry under mcpServers:
    {
      "mcpServers": {
        "bugagent": {
          "type": "http",
          "url": "https://mcp.bugagent.com/mcp",
          "headers": {
            "Authorization": "Bearer ba_live_YOUR_KEY_HERE"
          }
        }
      }
    }
    
  3. Save the file and fully quit Claude Desktop (Cmd+Q, not just close the window).
  4. Relaunch Claude Desktop. The tools hammer icon at the bottom of the chat input should now show bug Agent tools.
  5. Try it: type “List my 5 most recent bug reports” — Claude will call list_bug_reports automatically.

Windows

  1. Open Claude Desktop → File → Settings → Developer → Edit Config. This opens %APPDATA%\Claude\claude_desktop_config.json (typically C:\Users\YourName\AppData\Roaming\Claude\claude_desktop_config.json).
  2. Add the same JSON block shown in the macOS section.
  3. Save the file and fully quit Claude Desktop from the system tray (right-click the Claude icon → Quit), then relaunch.
  4. The tools hammer icon will show bug Agent tools.

Option 3 — Claude Code (CLI)

If you use Claude Code from your terminal (the CLI version of Claude), register the bug Agent server with one command. Works identically on macOS, Linux, and Windows.

claude mcp add --transport http bugagent https://mcp.bugagent.com/mcp \
  --header "Authorization: Bearer ba_live_YOUR_KEY_HERE"

Then restart your Claude Code session. Verify it’s connected:

claude mcp list

You should see bugagent in the list with a green dot. Start with an API-key-compatible prompt: “List my 5 most recent open bug reports.”

Connected, but some tools are missing?

Check the server’s tool count in /mcp, not just tools already loaded in the conversation. Claude Code can discover tools on demand using tool search. Ask it to search bugAgent for list_test_cases, list_test_suites or get_test_run_plan. See Claude Code’s tool-search documentation.

The catalog is filtered by API-key scopes. Test-case reads need test_cases:read; suite/run reads need test_runs:read. Request only the write scopes you actually need. Compare authenticated tools/list with the same endpoint and key as your client; anonymous discovery or a different key is not a valid comparison. Check for a project-level configuration overriding your user-level connection, then reconnect or restart after credential changes.

If the authenticated server catalog includes a tool but the client still cannot discover it, record the client version, server version, tool names/counts and any schema errors, with credentials and customer data removed. A session started with ENABLE_TOOL_SEARCH=false claude can distinguish deferred discovery from loading problems, but loads all tool definitions and uses more context; use it only as a temporary diagnostic. Do not broaden permissions or split endpoints merely to increase a tool count.

To remove it later:

claude mcp remove bugagent

Option 4 — OpenAI Codex CLI

If you use the OpenAI Codex CLI, export your API key and add bug Agent to ~/.codex/config.toml.

Permanent registration (add to config)

[mcp_servers.bugagent]
url = "https://mcp.bugagent.com/mcp"
bearer_token_env_var = "BUGAGENT_API_KEY"

Set the API key

export BUGAGENT_API_KEY="ba_live_YOUR_KEY_HERE"

Start or restart Codex from that environment. Codex resolves tool calls automatically from your natural-language prompt. Try: “List my open bugs sorted by severity.”

Option 5 — Cursor (Mac + Windows)

Cursor has built-in MCP support. With an appropriately scoped workspace API key, the AI assistant inside Cursor can file bugs, list reports, and run supported automation workflows without leaving your editor. Security, performance, and exploratory scans require delegated OAuth and applicable plan access.

  1. Open Cursor → Settings (Cmd+, on Mac / Ctrl+, on Windows) → MCP in the left sidebar.
  2. Click + Add new MCP server.
  3. Select HTTP transport type.
  4. Fill in:
    • Name: bugagent
      • URL: https://mcp.bugagent.com/mcp
      • Header name: Authorization
      • Header value: Bearer ba_live_YOUR_KEY_HERE
  5. Click Save. Cursor shows a green indicator when connected.
  6. Open Cursor’s chat (Cmd+L / Ctrl+L) and type “Create a bug report titled ‘Login broken’ with severity high.” Cursor will invoke create_bug_report.

Alternative: Cursor also reads ~/.cursor/mcp.json (Mac) or %USERPROFILE%\.cursor\mcp.json (Windows). Add the same JSON format shown in the Claude Desktop section.

Option 6 — VS Code with Continue extension (Mac + Windows)

If you prefer VS Code, the Continue extension supports MCP servers natively.

  1. Install the Continue extension from the VS Code marketplace.
  2. Open Continue’s config: Command Palette (Cmd+Shift+P / Ctrl+Shift+P) → Continue: Open config.json. The file is at:
    • macOS: ~/.continue/config.json
      • Windows: %USERPROFILE%\.continue\config.json
  3. Add an mcpServers entry:
    {
      "mcpServers": [
        {
          "name": "bugagent",
          "type": "streamable-http",
          "url": "https://mcp.bugagent.com/mcp",
          "requestOptions": {
            "headers": {
              "Authorization": "Bearer ba_live_YOUR_KEY_HERE"
            }
          }
        }
      ]
    }
    
  4. Save. Continue will auto-reload and show the bug Agent tools in the sidebar.
  5. Open the Continue chat panel and try: “List my 5 most recent open bug reports.”

Other VS Code MCP-capable extensions: Cline, Roo Code, and Windsurf (fork) all follow similar JSON config patterns with an mcpServers key and HTTP transport.

Option 7 — OAuth-aware hosts (Claude.ai web shown as the example)

Some MCP hosts authenticate via OAuth 2.0 and ask for a static client_id and client_secret upfront instead of accepting a bearer API key. Generate a connector credential pair from the bug Agent dashboard and paste it into the host’s connector form. The pair identifies the MCP client; after consent, tool execution uses the signed-in user and that user’s active bug Agent workspace. The walkthrough below uses the Claude.ai web app as the most common example.

i

Resource-bound OAuth. The protected resource identifier is https://mcp.bugagent.com/mcp. Standards-aware hosts discover it from /.well-known/oauth-protected-resource/mcp and send it as the RFC 8707 resource parameter. bug Agent issues opaque tokens bound to that resource, OAuth client, signed-in user, and granted scopes; a token cannot be replayed against another service or redeemed by another client.

  1. In bug Agent: open Settings → Developers → MCP Connectors. Click Generate connector, give it a name describing the host (e.g. “Claude.ai (work)”), paste the redirect URI your MCP host requires (for the Claude.ai web app that’s https://claude.ai/api/mcp/auth_callback — check your host’s connector docs for others), and choose Confidential for the auth method. Copy the client_id and client_secret shown once on the success screen.
  2. In your MCP host’s connector / OAuth settings, paste:
    • Server URL: https://mcp.bugagent.com/mcp
      • Client ID + Client Secret: from step 1
      • Authorization URL: https://mcp.bugagent.com/authorize
      • Token URL: https://mcp.bugagent.com/token
      • Protected resource / audience, when requested: https://mcp.bugagent.com/mcp For Claude.ai specifically: go to claude.ai/customize/connectors and click Add MCP connector.
  3. Save. The host redirects you to bug Agent to sign in (Google or email/password — whichever method you use for the dashboard) and approve consent, then completes the OAuth handshake.
  4. Manage and revoke generated connectors from the same Settings page. Revoking is immediate — the next request from that connector returns invalid_client.

Note: Claude Code, Cursor, VS Code, and the MCP Inspector don’t need this flow — they handle dynamic client registration (RFC 7591) automatically and authenticate via API key as shown above. The MCP Connectors form is only for hosts that require static OAuth credentials.

OAuth access and refresh values are displayed only to the host. They are opaque, rotated on refresh, and stored by bug Agent only as one-way hashes; the upstream identity refresh credential is encrypted at rest. Never copy an OAuth token into a REST API request or another MCP server.

Option 8 — Direct HTTP with curl (Terminal)

如果你希望在没有客户端的情况下直接测试服务器,或将其集成到脚本中,可以通过 curl 访问 HTTP 端点。MCP 协议是基于 Streamable HTTP 的 JSON-RPC 2.0。

macOS / Linux

# Set your API key as a variable
export BUGAGENT_API_KEY="ba_live_YOUR_KEY_HERE"

# 1. Initialize the MCP connection
curl -N -s https://mcp.bugagent.com/mcp \
  -H "Authorization: Bearer $BUGAGENT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl-example","version":"1.0.0"}}}'

# 2. List tools visible to this key
curl -N -s https://mcp.bugagent.com/mcp \
  -H "Authorization: Bearer $BUGAGENT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

# 3. Call a tool — list 5 reports from a specific project
curl -N -s https://mcp.bugagent.com/mcp \
  -H "Authorization: Bearer $BUGAGENT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc":"2.0",
    "id":3,
    "method":"tools/call",
    "params":{
      "name":"list_bug_reports",
      "arguments":{"project":"bugagent","limit":5}
    }
  }'

Windows(PowerShell)

# Set your API key
$env:BUGAGENT_API_KEY = "ba_live_YOUR_KEY_HERE"

# Use Invoke-RestMethod (PowerShell's curl equivalent)
$headers = @{
  "Authorization" = "Bearer $env:BUGAGENT_API_KEY"
  "Content-Type" = "application/json"
  "Accept" = "application/json, text/event-stream"
}

# 1. Initialize
$body = '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"powershell-example","version":"1.0.0"}}}'
Invoke-RestMethod -Uri "https://mcp.bugagent.com/mcp" \`
  -Method Post -Headers $headers -Body $body

# 2. List tools visible to this key
$body = '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
Invoke-RestMethod -Uri "https://mcp.bugagent.com/mcp" \`
  -Method Post -Headers $headers -Body $body

# 3. Call list_bug_reports for a specific project
$body = @{
  jsonrpc = "2.0"
  id = 3
  method = "tools/call"
  params = @{
    name = "list_bug_reports"
    arguments = @{ project = "bugagent"; limit = 5 }
  }
} | ConvertTo-Json -Depth 5

Invoke-RestMethod -Uri "https://mcp.bugagent.com/mcp" \`
  -Method Post -Headers $headers -Body $body

响应可能是 JSON 或 Server-Sent Events。每个 SSE 块是以 data: 开头的一行,后跟一个 JSON 对象。符合标准的客户端应发送 Accept: application/json, text/event-stream;bug Agent 目前会对缺失或不完整的 Accept 值进行规范化处理以保持兼容性。

ℹ️

排查 401 未授权错误: 检查你的 API 密钥是否已在 设置 → 开发者 中被吊销。密钥以 ba_live_ 开头。如果仍然无法解决,请重新生成密钥并重试。

访问模型与最小权限范围

完整的 OAuth 目录包含 141 个工具。工作区 API 密钥只能看到映射到其选定范围之一的工具。未经认证的发现可能显示工具元数据,但 tools/call 始终需要 API 密钥或 OAuth 令牌。

读取错误报告并解决项目 reports:read

创建和更新错误报告 reports:read, reports:write

使用监控 usage:read

检查 Jira 同步状态 jira:read

同步或合并 Jira 报告 jira:write

编写 Web 自动化 automations:write

运行 Web 自动化并读取运行结果 automations:run

观察移动资产和运行 mobile:read

管理移动资产 mobile:read, mobile:write

运行移动自动化 mobile:read, mobile:run

管理测试目录 reports:read, test_cases:read, test_cases:write

外部测试执行工作器 test_runs:read, test_runs:write

API 密钥绑定到其创建时所在的工作区。工具输入可以将调用范围缩小到已授权的项目,但不能将密钥切换到另一个工作区。使用 list_projects 解析项目 UUID,并拒绝不明确的名称。

工具标题和注解

tools/list 返回的每个工具都包含人类可读的标题和读/写提示。缺失的读取提示来自经过明确审查的列表,而非工具名称前缀或 API 密钥范围。显式注解(包括 false)会被保留。

  • readOnlyHint: true 描述不修改其环境的工具。
  • readOnlyHint: false 与 destructiveHint: false 结合描述追加式写入,而非只读操作。
  • readOnlyHint: false 与 destructiveHint: true 结合描述可能具有破坏性的写入。未分类的工具使用这些保守默认值。破坏性提示仅对写入操作有意义。

login 不是只读的:在 stdio 模式下它会保存凭据。analyze_fix_area 和 check_config_drift 是可能具有破坏性的写入,因为它们会替换持久化的分析结果或配置基线。

注解不授予访问权限,也不替代身份验证、工作区/项目授权、API 密钥范围或权限检查。确认提示取决于客户端的权限策略和用户设置;提示不保证调用是否会弹出确认。

对于程序化发现和审计,请下载生成的 mcp-tool-index.json。它记录了全部 141 个运行时工具、API 密钥范围或仅 OAuth 访问、权限族、输入名称、输出模式以及显式声明的 MCP 注解。null 注解表示未在调用点声明;请使用已连接服务器的 tools/list 响应来获取应用默认值后的有效注解。

!

仅 OAuth 工具: 账户、API 密钥和团队管理、Jira 连接管理、其他集成、高级测试控制、笔记、时间跟踪以及其他交互式操作不会通过添加 API 密钥范围来解锁。Jira 报告检查、同步和合并工具是通过 jira:read 和 jira:write 的少数例外。

试试看 — 自然语言提示

连接后,你无需了解工具名称或参数。用自然语言描述你的需求,你的 AI 助手会自动调用正确的 bug Agent 工具。

错误报告、范围限定的测试管理、Playwright 自动化、移动自动化和使用提示适用于具有匹配范围的 API 密钥。安全、性能、探索性、账户、团队、笔记、时间跟踪以及其他未指定 API 密钥范围的条目需要委派的 OAuth 和任何适用的计划权限。

错误报告

List my 5 most recent bug reports
Show all open critical bugs in the Auth project
Create a bug titled "Login broken on Safari" with severity s2
Update TEST-451 status to in-progress and assign it to me
Add a comment to TEST-451: "root cause confirmed — null check missing in auth middleware"
Show me everything filed this week, grouped by severity

测试管理

Create a test suite called "Smoke Tests" with cases for login, checkout, and account settings
Run the Regression suite and list all failures
Use Hermes to execute the curated "Checkout smoke" suite and report every result to bugAgent
Show failing test cases from the last 7 days
Which test cases have never been run in the past 90 days?
Get a pass-rate trend for this month vs last month

安全与性能

Run a security scan on https://app.example.com
Get this month's security scan results — show only high and critical findings
Create a performance test for the landing page and check Lighthouse scores
What are the Core Web Vitals for our checkout flow?

Playwright 自动化

Create a Playwright script that logs in and verifies the dashboard loads
Run the checkout automation on iPhone 15 Pro on a real device
Optimize the login automation script
Show runs for the checkout automation — any failures?
Schedule the smoke test suite to run every weekday at 6 AM UTC

探索性 AI

Run an exploratory AI session on https://app.example.com with 5 parallel agents
Get the latest exploration run results — list any bugs that were filed
What testing strategies did the agents use and which found the most issues?

使用与统计

Check my plan usage for this month
Show team bug stats for this week broken down by severity and type
List all team members and their roles
How many security scans do I have left this month?

快速参考

所有八种连接选项的设置参考。API 密钥客户端通过 Streamable HTTP 连接到 https://mcp.bugagent.com/mcp,并使用标头 Authorization: Bearer ba_live_YOUR_KEY_HERE;支持 OAuth 的主机使用仪表板中生成的连接器凭据。

Claude Desktop — macOS ~/Library/Application Support/Claude/claude_desktop_config.json

Claude Desktop — Windows %APPDATA%\Claude\claude_desktop_config.json

Claude Code(CLI) claude mcp add --transport http bugagent https://mcp.bugagent.com/mcp --header "Authorization: Bearer ba_live_..."

Codex CLI ~/.codex/config.toml

Cursor — macOS 设置 → MCP 界面,或 ~/.cursor/mcp.json

Cursor — Windows %USERPROFILE%\.cursor\mcp.json

VS Code + Continue ~/.continue/config.json(macOS)/ %USERPROFILE%\.continue\config.json(Windows)

支持 OAuth 的主机 设置 → 开发者 → MCP 连接器 — 生成主机的 client_id 和 client_secret

直接 HTTP(curl) curl / Invoke-RestMethod — 包含 Accept: application/json, text/event-stream

故障排查

401 Unauthorized 密钥错误、已过期或被吊销。检查 设置 → 开发者 — 密钥以 ba_live_ 开头。如有需要请重新生成。

工具未显示在客户端中 API 密钥客户端仅列出密钥选定范围允许的工具。在设置 → 开发者中检查密钥,然后在更改配置后完全退出并重新启动客户端。在 Claude Desktop 中,使用 Cmd+Q(不仅仅是关闭窗口)。在 Cursor 中,检查设置 → MCP 是否有绿色圆点。

客户端中字段缺失 将客户端的模式与同一端点的原始 tools/list 进行比较。如果不同,请刷新或重新连接工具目录并开始新对话。如果问题仍然存在,请收集端点、客户端版本和原始 tools/list 响应;过期的缓存只是可能的原因之一。

Accept header required 发送 Accept: application/json, text/event-stream 以符合标准的 Streamable HTTP。bug Agent 目前会规范化缺失或不完整的值,但集成不应依赖这种兼容性行为。

错误工作区的数据 每个 API 密钥限定在一个工作区。从你想查询的工作区在 设置 → 开发者 中生成新密钥。

工具显示但调用静默失败 检查响应中的 isError: true 和返回的内容。可见的工具仍可能因计划、角色、功能权限、项目成员资格、所有权或无效输入而被拒绝。只有在读取工具错误后才检查服务器健康状态。

MCP Inspector CORS 错误 在 Inspector 界面中选择 代理(而非直接)作为连接类型。Inspector 通过本地 Node 进程进行代理,以绕过浏览器 CORS 限制。

MCP Inspector v2 以代码 5 退出 Inspector v2 在工具响应包含 isError: true 时返回非零退出代码。读取响应消息以了解计划、权限、输入或运行时错误;Inspector v1 对相同的失败工具响应可能返回退出代码 0。

Codex CLI — 工具无法识别 验证 ~/.codex/config.toml 使用 [mcp_servers.bugagent],设置 bearer_token_env_var = "BUGAGENT_API_KEY",并在启动 Codex 之前导出该变量。如果工具仍然不显示,请检查 codex --version。

MCP 功能

对话会话仍然是工作区限定的试点功能。保存会话生成的脚本需要其所有者的明确 Workbench 批准,通过 仅会话保存脚本端点 进行。没有 MCP 批准工具:要求代理起草脚本不会创建或安排自动化。

完整的交互式/OAuth 目录包含 141 个工具。工作区 API 密钥只能发现其选定范围允许的最小权限子集;账户、API 密钥管理、团队管理、高级测试、笔记和时间跟踪工具仅限交互式会话,除非条目明确指定了 API 密钥范围。

🐛

错误报告管理

可恢复的 Google Sheets 截图导入使用单独的 REST POST /api/reports/import-attachment 端点,配合 reports:write,并使用 reports:read 获取 GET 状态。未添加截图导入 MCP 工具。此仅支持 JPEG/PNG 的 API 在报告完成前会验证私有存储和精确映射的 Jira 问题;传统报告上传仍仅限会话。

  • create_bug_report — 提交新报告,自动分类涵盖 19 种类型——缺陷、功能请求、增强、技术债务等(标题:3-500 字符)。可选的 attachments 数组接受 base64 编码文件,每个最大 400 MB:支持任何图片、视频、音频、PDF 或文本/JSON。设置 format_description: true 可使用 AI 将描述自动重排为结构化模板。传入 time_spent_seconds 可跟踪 QA 工作量。传入 priority(urgent / high / normal / low)可独立于严重级别设置修复紧急程度。传入 is_epic: true 可创建 Epic,或传入 parent_epic_id(UUID/短 ID)在同一授权项目中创建子项。响应包含层级字段以及 project_id、project、short_id、legacy_short_id 和 project_short_id。
  • list_bug_reports — 列出并筛选报告(每页最多 100 条)。项目筛选在分页前于服务端应用。可按 project(UUID、slug、精确名称或工单前缀)、project_id、project_slug、project_prefix、workspace(UUID、精确名称或工作区工单前缀)、workspace_id / team_id、is_epic、type、severity、status、resolution、root_cause 或 reporter_user_id 进行筛选。search 筛选器搜索报告文本;纯数字输入(如 366)会对旧版和项目工单编号进行精确查找,因此包含这些数字的不相关文本会被排除。每条结果包含租户范围内的人员/项目标识符以及 is_epic、parent_epic_id、parent_epic 和有界的 epic_progress。报告读取工具不暴露成员电子邮件地址。
  • pick_next_bug — 按优先级顺序(S1 → S2 → S3,每个桶内最早优先)返回代理循环应处理的下一个缺陷。自动限定在你的工作区范围内——返回你团队中所有项目中具有 status new、awaiting-triage 或 confirmed 且严重级别为 S1-S3 的工单。只读——不会原子性地认领工单。可选的 severity(单层)、limit(1-50,默认 1)。返回一个包含 count 和 bugs 的对象;每个缺陷是精简的队列行,而非完整的 list_bug_reports 结构。与 claim_bug 配合使用,实现先读后认领模式。
  • claim_bug — 原子性地将缺陷从 status new、awaiting-triage 或 confirmed 转换到 status='in-progress',将 assigned_to 设置为调用用户,并盖上 claimed_at=NOW() 时间戳。通过 Postgres 的 UPDATE-WHERE-RETURNING 模式,在并发调用者之间无竞态——如果两个代理在相近时间内对同一 id 调用 claim_bug,恰好一个会获得包含缺陷主体的 claimed:true,另一个获得包含原因字符串的 claimed:false。成功响应包含 reporter_user_id、reporter_name、assigned_to 和 assignee_name。pg_cron 回收器会自动将过期认领(状态= in-progress + claimed_at > 30 分钟)释放回 new,因此崩溃代理的工单无需人工干预即可重新进入队列。输入:id(UUID 或短 ID)。
  • get_bug_report — 通过 UUID 或工作区/项目短 ID 获取报告的完整详情。返回标准的人员/项目/质量字段以及 is_epic、父级身份、聚合进度和 Epic 的有界首个子页面。
  • 原生报告标签: create_bug_report 和 update_bug_report 接受 tags 作为字符串数组,例如 {"tags":["login","regression"]}。去重前最多接受 20 个原始元素。字符串会被修剪,必须非空且最多 50 个 Unicode 码点,且不能包含 ASCII 控制字符(U+0000 至 U+001F 或 U+007F)。修剪后移除完全重复项;保留大小写,Login 与 login 不同。更新时,数组替换所有标签,[] 清除标签,省略则保留标签。创建时,省略表示无标签。null 和无效元素会被拒绝。创建、获取、列出和更新结果暴露原生 tags。
  • 标签筛选: 调用 list_bug_reports 并传入 {"project":"bugagent","tags":["login","regression"]} 可在分页前按大小写敏感方式匹配所有请求的标签。相同的标签限制适用;省略或 [] 表示不应用标签筛选。现有的 reports:read / reports:write 范围和工作区/项目授权不变。这不会添加可视化标签 UI 或自动 Jira 标签导入、同步或回填。
  • get_epic — 直接读取一个 Epic,需要 id(UUID 或工作区/项目短 ID)。仅返回 Epic 记录,不会隐式加载子报告。需要访问其工作区和项目;API 密钥调用者需要 reports:read。请单独使用 list_epic_children 读取子项。
  • list_epic_children — 使用 id、limit(1–100)和 offset 对 Epic 的子报告进行分页。返回 children、total、has_more 和 SQL 聚合的 epic_progress,而无需加载每个子报告。
  • update_bug_report — 更新标准报告字段以及 is_epic 和 parent_epic_id。传入 parent_epic_id: null 可解除关联;重新关联/解除关联是原子操作,需要同工作区、同项目授权。提升为 Epic 会解除现有父级关联,而包含子项的 Epic 不能降级。现有的状态/解决方案/根因和分配通知规则仍然适用。对 Jira 关联报告进行 status 更改时,如果恰好有一个合法转换与映射状态匹配,则会通过其工作流转换镜像到 Jira 问题;否则问题保持不变。
  • add_comment — 向缺陷报告添加评论(UUID 或短 ID,正文 1-10000 字符)。如果报告同步到 Jira,评论会自动推送到关联的 Jira 问题。私有附件 Markdown(如 ![proof](/api/attachments/ATTACHMENT_UUID))在 Jira 中会变成绝对认证的 bugAgent 智能链接。查看者必须登录 bugAgent 并具有报告工作区和项目的访问权限;不保证 Jira 原生内联预览。
  • list_comments — 列出报告的存储评论线程,最早优先——每条评论包含作者姓名、parentId(线程回复)、createdAt 和 updatedAt。评论不属于 get_bug_report,因此这是读取工单讨论的方式。接受 UUID 或短 ID。此读取不会刷新 Jira。需要新鲜 Jira 评论的定时集成可先使用授权经理拥有的 API 密钥调用 POST /api/jira/comments-refresh。使用评论 ID 和内容修订版区分新评论和编辑,如果刷新失败,不要声称完整的活动报告。
  • link_bug_reports — 在同一授权项目中的两个报告之间创建定向语义链接。对于 parent-of,from 报告必须是 Epic,to 报告必须是标准子项。创建/更新 Epic 分配时优先使用 parent_epic_id。
  • unlink_bug_reports — 通过其 UUID(link_id,由 link_bug_reports 或 list_bug_report_links 返回)移除先前创建的缺陷报告链接。
  • list_bug_report_links — 列出触及缺陷报告的每个用户策划链接。每条链接从所提供报告的视角返回——例如,此报告为目标时存储的 duplicate-of 行渲染为 duplicated-by;此报告为目标时 parent-of 渲染为 subtask-of;此报告为目标时 depends-on 渲染为 blocks;此报告为目标时 testing-blocked-by 渲染为 blocks-testing。related-to 是对称的。补充由 get_bug_report 返回的自动检测 similar_reports 字段。
  • classify_bug — 将描述分类为 19 种报告类型之一(缺陷、功能、增强等),带置信度分数
  • flush_reports — 批量删除旧报告(仅限管理员)

📊

使用情况与分析

  • get_usage — 检查计划限制内的使用情况。API 密钥调用者需要 usage:read。
  • get_stats — 每日计数、类型/严重级别/状态细分

📁

项目管理

  • list_projects — 列出可访问的项目,包含 id、name、slug、ticket_prefix、描述和默认状态。使用这些值配合缺陷报告和测试目录工具来定位正确的项目。
  • create_project — 创建新项目(如果是第一个则自动成为默认项目)
  • delete_project — 永久删除项目及所有关联数据(缺陷报告、自动化、测试用例、移动应用、计划、地理快照、笔记、时间条目)。仅限所有者/经理。不能删除最后一个项目。存储会自动释放
  • export_okf_bundle — 导出项目的 QA 知识——缺陷报告、测试用例、自动化和性能、安全及探索性测试——作为 OKF/OQA Markdown 包(oqa.ai 使用的开放查询代理格式)。默认为活动项目;传入可选的 project(slug 或名称)可导出其他项目。返回包中的文件列表以及包本身(base64 编码的 zip)

🔐

认证与账户

  • register_account — 创建新账户(密码:8-128 字符,速率限制:5/15 分钟)
  • login — 登录并接收访问令牌(速率限制:5/15 分钟)
  • update_profile — 更新显示名称
  • change_password — 更改账户密码
  • get_settings — 读取个人资料和通知偏好。
  • update_settings — 更新支持的资料和通知偏好。仅限 OAuth 变更。

🔑

API 密钥管理

  • generate_api_key — 创建命名 API 密钥
  • list_api_keys — 列出活动密钥(仅前缀)
  • regenerate_api_key — 撤销并替换密钥
  • delete_api_key — 永久撤销密钥

👥

团队管理

  • list_workspaces — 列出你所属的工作区、你在每个工作区的角色,以及会话默认使用的工作区。多工作区主机可使用 X-BugAgent-Workspace 标头固定请求(仅限活跃成员)
  • list_team_members — 列出工作区的所有成员,包含角色、状态和助推器标志
  • invite_team_member — 通过电子邮件邀请用户(经理可邀请贡献者和经理;只有所有者可邀请管理员)。5 天过期链接

🎯

集成

Jira Cloud 报告同步包含在免费版和企业版中。工作区经理必须先在仪表板中连接 Jira。然后工作区 API 密钥可使用 jira:read 进行比较和 jira:write 进行同步/合并;Atlassian 计划和 API 限制仍然适用。

  • sync_to_jira — 使用团队的共享连接将报告推送到 Jira。路由到与报告 bugAgent 项目映射的 Jira 项目(默认回退到工作区默认项目),并使用其字段映射:v2 区分优先级和自定义严重级别,而无版本映射保留传统的严重级别到优先级转换。可选的 projectKey 可以选择仅该配置的映射或工作区默认值;任意 Jira 项目将被拒绝。通常你不需要这个: 当项目的同步模式为 auto_new 或 auto_all 时,你创建的报告会自动推送——仅在 manual 模式下手动调用。
  • check_jira_sync — 对授权的关联报告进行标题和映射状态、优先级和严重级别的只读比较。使用报告保存的项目和 Jira 连接。版本 2 将 Jira 优先级与受支持的自定义严重级别字段分开映射;无版本映射保留传统的优先级到严重级别行为。此工具不比较评论、附件、类型或每个 Jira 字段。
  • merge_jira_sync — 使用 prefer: jira 拉取 Jira 值或 prefer: bugagent 推送本地值来合并这些映射字段。状态推送使用合法的 Jira 工作流转换。未映射的出站冲突、远程写入失败和并发本地更改返回错误,而不是声称一切同步。评论和附件仍然是单独的仪表板同步工作流。跨系统写入不是原子的。
  • push_to_claude — 为 bug 报告生成(或重新生成)开发者笔记——根本原因、建议修复、验证步骤和风险评估。接受 UUID 或短 ID(WRKID-545)。使用平台密钥——无需每个团队的 Claude 连接。运行自适应链:在 s3 / medium 或 s4 / low bug 上三步(Sonnet 草稿 → OpenAI gpt-5 批评 → Sonnet 综合),在最高两个严重级别桶上五步——s1 / critical 或 s2 / high——(草稿 → 批评 → Sonnet 反驳 → Claude Opus 裁决者读取完整记录并独立判断撰写最终笔记)。响应暴露每一轮:analysis、draft、critique、rebuttal、challenger_model、adjudicator_model 和一个 debated 标志。任何步骤失败都会回退到次优答案。在 bug 创建时自动触发;通常仅在手动重新生成时调用。
  • analyze_fix_area — 生成(或重新生成)开发者笔记的“可能修复区域”子块——一个窄范围的 Sonnet 输出,指出修复最可能属于代码库的哪个位置。接受 UUID 或短 ID。使用平台 Anthropic 密钥。当团队有 github_connections 行且项目有 github_repo 映射时,输出基于连接仓库的真实文件片段;否则回退到一般指导并提示连接仓库。返回 likely_fix_area 文本、generated_at、repo_used 和一个 grounded 标志。在 bug 创建时自动触发——代理通常仅在手动重新生成时需要调用。
  • upgrade_plan — 获取销售辅助的企业版注册链接

⚡

性能测试

  • create_performance_test — 创建性能测试配置,包含 URL、设备、虚拟用户、持续时间、分数阈值和自动创建 bug 开关。仅限企业版
  • run_performance_test — 为 Web 性能测试触发页面审计和负载测试。返回运行 ID 以轮询结果。移动应用性能分析运行从仪表板触发
  • get_performance_results — 获取完整结果,包括 Lighthouse 分数(性能、可访问性、最佳实践、SEO)、Core Web Vitals(LCP、FID、CLS、FCP、TTFB、INP、TBT、SI)和负载测试指标(VU、请求、RPS、p50/p90/p95/p99 延迟)
  • list_performance_tests — 列出当前团队的所有性能测试配置
  • get_performance_usage — 检查每月性能测试使用量。性能测试仅限企业版。免费=0,企业版=无限

示例工作流

  1. get_performance_usage → 检查剩余配额
  2. create_performance_test → 为你的 URL 配置测试
  3. run_performance_test → 触发审计 + 负载测试
  4. get_performance_results → 查看分数和核心指标

🛡

安全扫描

  • create_security_scan — 创建安全扫描配置。Web 扫描使用 Quick Scanner + Nuclei(4,000+ 模板),具有三个深度级别和可选的身份验证扫描。移动扫描使用 MobSF 进行 APK/IPA 二进制分析。可配置自动创建 bug 和严重级别阈值。仅限企业版
  • run_security_scan — 触发漏洞扫描。Web 扫描需要 DNS 域名验证。移动扫描需要上传的应用。返回运行 ID 以轮询结果
  • get_security_results — 获取完整结果,包括安全分数(0-100)、按严重级别分类的发现(严重、高、中、低、信息)以及 CWE 引用、OWASP 映射、证据和修复指导
  • list_security_scans — 列出当前团队的所有安全扫描配置,包含上次分数和认证/深度徽章
  • get_security_usage — 检查每月安全扫描使用量。安全扫描仅限企业版。企业版=无限
  • list_security_schedules — 列出团队的所有计划安全扫描,包含 cron、时区、启用状态、下次运行和通知设置。与父扫描配置(名称、scan_type、target_url)连接
  • create_security_schedule — 为安全扫描创建定期计划。需要 scan_id 和 cron_expression。每个扫描配置一个计划。可选的 timezone、notify_on_fail(无/电子邮件/Slack/两者)、notify_email、slack_channel_id。每次运行计入每月上限;管理员用户绕过上限。扫描深度始终在运行时从扫描配置读取
  • delete_security_schedule — 删除计划的安全扫描。不影响父扫描配置或已完成的运行

示例工作流

  1. get_security_usage → 检查剩余配额
  2. create_security_scan → 为你的 URL 或仓库配置扫描
  3. run_security_scan → 触发一次性漏洞扫描
  4. create_security_schedule → 自动化定期运行(例如,主分支上的每周 SAST)
  5. get_security_results → 查看发现和修复

📖

代码审查

  • list_code_reviews — 列出团队最近的 AI 代码审查。返回质量分数、严重级别计数、PR 信息和时间戳。仅限企业版
  • get_code_review — 获取包含所有发现的代码审查。每个发现包括严重级别、类别(bug/安全/性能/风格/逻辑/可维护性)、标题、描述、代码建议、文件路径和行号
  • get_code_review_usage — 检查代码审查使用量。AI 代码审查仅限企业版;企业版无限
  • get_code_review_analytics — 获取审查分析:趋势、发现类别/来源、严重级别细分、速度指标、热门仓库/作者。支持 7/30/90 天回顾

示例工作流

  1. get_code_review_usage → 检查剩余审查次数
  2. 在仪表板 /dashboard/code-review 审查 PR
  3. list_code_reviews → 查看最近的审查
  4. get_code_review → 获取发现和建议

🔍

探索性 AI

多代理自主网站 bug 查找器,最多 10 个并行代理,每个使用不同的测试策略。

  • list_explorations — 列出团队的探索性 AI 配置
  • create_exploration — 创建新的探索。接受 agent_count(1–10,最大 10)以运行多个具有独特策略的并行代理:happy_path、edge_case、security、accessibility、error_path、performance、mobile、data_integrity、navigation、custom。此工具无法配置凭据或认证模式。通过仪表板或 REST 显式配置和启动仅测试登录流程,然后使用 get_exploration 和 get_exploration_run 检查配置和结果。切勿从指令推断模式或将凭据放入 MCP 参数。默认基于凭据的探索仍需要可重用的会话。
  • get_exploration — 获取探索配置,包含代理设置、安全认证元数据和最近的运行。密码和密文永远不会返回。
  • get_exploration_run — 获取运行结果,包含每个代理的进度、阶段数据、带代理归属的发现(agent_index、agent_strategy)和关联的 bug
  • get_exploration_usage — 检查每月使用量。探索性 AI 仅限企业版;企业版:无限(10 个代理)

示例工作流

  1. create_exploration 使用 agent_count: 5 → 配置 5 个并行代理
  2. 从仪表板或通过 POST /api/explorations/run 触发运行
  3. get_exploration_run → 轮询每个代理的进度和发现
  4. 在仪表板中查看带代理归属的去重发现

📝

笔记

  • list_notes — 列出笔记,可选的过滤条件包括关键字、项目、可见性、文件夹、标签、归档、wiki、日期范围和排序。返回用户拥有的笔记或与用户共享的笔记。
  • create_note — 以 5 种格式之一创建笔记:markdown、plain、bugtemplate、checklist、outline。将 visibility 设置为 private 或 shared。如果未提供标题,则从前 30 个字符自动生成标题。可选的 attachments 数组接受 base64 编码的文件,每个最大 400 MB:任何图像、视频、音频、PDF 或文本/JSON。传递 time_spent_seconds 以跟踪 QA 工作量。
  • get_note — 获取完整笔记详情,包括内容和附件。需要 id。
  • update_note — 更新标题、内容、格式、可见性、项目或 time_spent_seconds。传递 attachments 数组以将新文件(每个最大 400 MB)追加到笔记的现有附件,而不替换它们。只有作者可以更新。需要 id。
  • delete_note — 永久删除笔记及其附件。只有作者可以删除。需要 id。
  • list_note_folders — 列出笔记/wiki 文件夹,可选地按项目限定范围。
  • create_note_folder — 创建项目范围的笔记/wiki 文件夹,可选的父文件夹、可见性、收藏和队友访问设置。

示例工作流

  1. create_note → 开始测试会话笔记
  2. update_note → 测试时追加观察
  3. list_notes → 按关键字或项目搜索过去的笔记
  4. get_note → 检索带附件的完整笔记

🤖

自动化

  • create_automation — 使用自定义 Playwright 脚本创建新的自动化(无需 FAB 录制)。需要 name。可选:target_url(如果省略,则从脚本中的第一个 page.goto(...) URL 自动推导)、script(Node.js/JavaScript/TypeScript 或 Python — 语言自动检测;默认为占位符)、status(draft 或 active,默认:draft)、project_id。返回自动化 id。提示 — 复制自动化: 使用 get_automation 获取原始脚本,然后调用 create_automation,并将 name 设置为 "[Copy] Original Name",同时传入原始 script、target_url 和 project_id。副本以 draft 状态启动,且没有版本历史。
  • list_automations — 列出 Playwright 自动化脚本。按 project_id 或 status(draft、active、paused)筛选。返回自动化数组,包含名称、target_url、last_run_status 和 run_count。
  • get_automation — 获取完整的自动化详情,包括 Playwright 脚本和最近的运行记录。需要 id。返回带有实时 script 的自动化、一个 script_versions 堆栈(最旧在前,最多 100 条先前条目,每条 { script, source, timestamp }),以及一个 recent_runs 数组,其中每次运行都带有执行它的 script_version_label / script_version_source。如果你需要选择特定的历史版本,请在 run_automation 之前调用此工具。
  • run_automation — 触发 Playwright 测试的立即运行。需要 automation_id。自愈定位器(自动): 当定位器操作超时时,运行器会向 Claude 请求一个有效的选择器并重试该步骤一次 — 断言永远不会被修复,因此真正的回归仍然会失败 — 并且每次修复都会记录在运行的标准输出中。模拟模式(默认):可选的 device 用于模拟设备配置文件(例如 desktop、iphone-15)。真实模式:设置 browserstack: true 与 bs_browser(chrome、firefox、safari、edge)、bs_os(Windows、OS X)和 bs_os_version 以在真实桌面浏览器上运行。真实移动设备: 设置 bs_os: "android"(设备:"Samsung Galaxy S25 Ultra"、"Google Pixel 10"、"OnePlus 13R")或 bs_os: "ios"(设备:"iPhone 17 Pro Max"、"iPhone 16 Pro Max"、"iPhone 15 Pro Max"),并在 bs_os_version 中传递设备名称。两种模式都在后台运行;Real 描述的是执行环境,而不是可见的交互式会话。Node.js 脚本通过 browserstack-node-sdk 路由(涵盖桌面 + Android + iPhone)。Python 脚本通过 browserstack-sdk(pytest-playwright)路由,仅涵盖桌面 — 不支持通过 Python 进行真实移动设备,因为 pytest-playwright 的 browser_type.connect() 无法驱动 BrowserStack 的真实移动端点。视频和网络日志自动捕获;控制台日志仅限桌面。版本重放: 使用 get_automation 检查 script_versions,然后传递首选持久 version_label(例如 "v103")。旧版 version_index 仍然受支持,但不得与 version_label 组合使用。默认:当两个选择器都省略时,运行当前保存的脚本。 被修剪的标签和无效索引将被拒绝,而不是静默运行当前版本。运行记录存储实际运行的精确快照,任何从失败运行自动创建的 bug 报告都会在编辑器中深度链接回该版本。
  • list_automation_runs — 列出自动化的最近运行记录。需要 automation_id。返回带有状态、duration_ms 和 error_message 的运行记录。
  • list_schedules — 列出所有计划的 Web 自动化运行,包含可空的 cron_expression、可空的 run_at、once_status、时区、设备和通知设置。重复行保留 null 的 run_at 和 once_status;一次性行的 cron 为 null。一次性状态:pending、claimed、missed、dispatched、failed、uncertain。这些是调度状态,不是测试结果;请检查 list_automation_runs 以获取结果。
  • 重复的 Web 调度: create_schedule 验证五个数字 cron 字段和时区,并返回未来的 UTC next_run_at。支持每月和每年重复。例如,30 12 23 9 * 在 America/Toronto 中表示每年 9 月 23 日 12:30,而不是一次性运行。无效或不可能的时间在创建前会被拒绝。当同时限制月份中的日期和星期中的日期时,两者必须匹配。不存在的夏令时时间会被跳过;重复的挂钟时间可能发生两次。调度发生在调度器的下一次轮询时,不一定在精确的分钟。现有的重复行为不变。
  • 一次性 Web 调度: 调用 create_schedule 并传入 { "automation_id": "AUTOMATION_UUID", "run_at": "2030-12-15T09:30:00-05:00", "timezone": "America/Toronto" },选择未来的日期并省略 cron_expression。只提供一个时间字段。run_at 需要带偏移量的 ISO 8601 未来时间戳(显式偏移或 Z);IANA 时区仅用于显示。启用的待处理调度在到期后的第一次 cron 轮询时执行;迟到超过一小时会被标记为 missed。它在调度前被原子性地声明并禁用,一旦被消费就无法重新启用。明确的调度失败是 failed;模糊的调度是 uncertain,并且永远不会自动重试。在安排另一次尝试之前检查运行记录。dispatched 不表示已完成或通过。创建仅限 API/MCP,不是新的仪表板创建模式。
  • Web 调度时区是 IANA 标识符,例如 America/Argentina/Buenos_Aires。仪表板选择器包含所有服务器支持的区域和城市,并默认为你的个人资料时区;MCP 时区默认值保持为 UTC。
  • create_schedule — 创建计划的 Web 自动化运行。需要 automation_id 以及 cron_expression 或 run_at 中的一个。支持可选的设备、时区、失败通知、电子邮件和 Slack 频道设置。首先通过仪表板连接 Slack,并选择一个机器人所属的频道;仅安装 webhook 是不够的。请参阅 Slack 设置和频道发现。
  • 一次性推出和恢复: 在部署匹配的 API/MCP 和调度器代码之前,应用数据库迁移 374_one_time_web_schedules.sql。claimed 可能在 worker 崩溃后持续存在:在创建替代品之前检查运行历史,无论是已声明还是不确定的调度。迟到超过一小时的时间戳永远不会自动执行。
  • 草稿 Web 自动化: 在创建调度、重新启用调度或更改其 cron 表达式或时区之前,先激活自动化。create_schedule 在拒绝草稿状态之前验证工作区和项目访问权限。当自动化处于草稿状态时,现有调度会跳过周期;暂停、删除、固定和仅通知的更改仍然可用。没有 Web update_schedule MCP 工具;请使用仪表板进行这些更新。
  • delete_schedule — 删除计划的 Web 自动化运行
  • list_mobile_schedules — 列出所有计划的移动自动化运行,包含设备、cron、时区和通知
  • create_mobile_schedule — 在真实设备上创建计划的移动自动化运行。需要 automation_id 和 cron_expression;devices 是可选的。
  • delete_mobile_schedule — 删除计划的移动自动化运行
  • optimize_automation_script — 将 Playwright 脚本发送给 Sonnet 4 进行 AI 驱动的优化。应用 12 点检查清单,修复选择器、等待策略、断言、错误处理、认证模式、移动兼容性和严格模式。需要 automation_id。优化前会保存当前脚本版本。返回优化后的脚本和更改摘要。
  • undo_automation_script — 将自动化脚本回滚到之前的版本。最多保留 100 个之前的版本。需要 automation_id。返回恢复的脚本和剩余版本数。

示例工作流

  1. create_automation → 使用自定义脚本创建测试
  2. list_automations → 浏览可用测试
  3. get_automation → 检查 Playwright 脚本
  4. run_automation → 触发测试
  5. list_automation_runs → 检查结果和持续时间

⏱️

时间跟踪

  • list_time_entries — 列出团队的时间条目。按 period(today、week、month、all)、project_id、category 和 sort(newest、oldest、most_time、least_time)筛选。仅限企业版计划。
  • create_time_entry — 记录 QA 任务花费的时间。需要 description、category 和 duration_minutes。可选设置 project_id 和 entry_date(默认为今天)。仅限企业版计划。
  • update_time_entry — 更新现有的时间条目。需要 id。可以更新 description、category、duration_minutes、project_id 或 entry_date。仅限企业版计划。
  • delete_time_entry — 永久删除时间条目。需要 id。仅限企业版计划。

示例工作流

  1. create_time_entry → 记录 45 分钟的回归测试
  2. list_time_entries → 查看本周的时间条目
  3. update_time_entry → 调整持续时间或类别
  4. delete_time_entry → 删除不正确的条目

☑️

测试用例

测试管理,具有分层文件夹、嵌套套件(最多 3 层深,运行时子套件自动展开)、拖放重新排序,以及一个分析报告选项卡,包含 KPI 趋势、失败分析、套件健康、覆盖率和测试人员生产力。所有工具直接调用 Supabase — 没有 HTTP 往返,延迟与仪表板相同。

免费限制: 10 个存储的测试用例、1 个套件、3 个文件夹、每个用例 128 KB 的结构化内容、2 个活动的工作区 API 密钥,以及每个 UTC 日历月 10 次总测试运行。其中最多 3 次运行可以使用 Hermes 或其他外部代理,每次外部运行有 1 个活动外部运行,每个外部计划最多 10 个用例。免费 API 密钥 MCP 流量限制为每个密钥每分钟 30 个请求,每个工作区每分钟 60 个请求。企业版测试用例存储和运行不受限制,但受一般平台保护。

AI 测试用例生成、AI 标签建议、Figma 导入和测试用例文件附件需要企业版。128 KB 免费结构化内容限制与企业版文件附件是分开的。免费版可以存储 URL 引用。核心 MCP 测试用例工具在免费版中在上述限制内仍然可用。

免提执行:运行审查页面是一个轮播,一次只显示一个用例,键盘快捷键(P 通过 · F 失败 · B 阻塞 · S 跳过)和语音控制。点击麦克风,然后说“通过”、“失败”、“阻塞”、“跳过”、“下一个”、“上一个”、“添加备注”(转录到备注字段)、“保存备注”或“关闭语音”。成功结果时自动前进到下一个未测试的用例;失败时停留在当前用例,以便测试人员口述详细信息并生成 bug。适用于 Chrome、Edge 和 Safari。

用例与文件夹
  • list_test_cases — 列出可访问的测试用例,可选用 project 选择器以及 search、priority、type、status 和 sort 过滤器。添加 folder_id(null 表示未归档)或 suite_id 以进行直接成员资格(不含后代)。API 密钥调用者需要 test_cases:read。limit 默认为 50(1-200);offset 默认为 0(0-1000000)。未更改的 cases 数组伴随 total / total_count(用于所有授权匹配)、limit、offset、has_more 和可空的 next_offset。此前 total 错误地表示页长度。请遵循 next_offset 直到 null;不要根据页长度推断完成。超过偏移量 1000000 的续传会明确失败;请缩小过滤器范围,而不是接收不可用的游标或错误的完成状态。超过 1 MiB 用例数据的页面会明确失败:请使用更小的限制重试,而不是接受被省略的记录。使用稳定 ID 打破平局,但并发编辑可能会移动偏移页面。
  • 分页示例: 使用 {"project":"test-bed","limit":50,"offset":0} 调用 list_test_cases。对于 55 个匹配项,响应包含 total:55, has_more:true, next_offset:50。使用 offset:50 重复以获取剩余五个,以及 has_more:false, next_offset:null。
  • create_test_case — 在必需的 project 选择器(UUID、slug、精确名称或工单前缀;先调用 list_projects)中创建测试用例。两种模板变体:steps(默认)— 通过 steps 数组的逐步 { action, expected } 网格;text — 通过 text_content 的单一自由格式描述。两个字段可以在同一次调用中发送。可选的 urls 数组(最多 10 个 http/https URL)附加参考链接,在 Free 版可用。文件附件需要 Enterprise 版和仪表板会话。API 密钥调用者需要 test_cases:write。
  • 分页恢复: 请求超出可用结果的用例偏移量会返回明确错误;从偏移量 0 重新开始。当用例在请求之间被移除时也可能发生这种情况。请遵循返回的续传信息,而不是猜测下一个偏移量。
  • 用例标识符: list_test_cases、get_test_case、create_test_case 和 update_test_case 返回 UUID id、不可变的 short_id(例如 TEST-BA-CASE-123)和数字 case_number,包括紧凑的更新/无操作响应。旧版无项目用例使用 TEST-CASE-123。缺失的标识符返回为 null;使用 UUID 作为回退。数据库分配标识符;调用者不能更改它们或在创建时选择它们。前缀重命名不会重写现有 ID。
  • 单用例查找: get_test_case 和 update_test_case 接受 id 中的 UUID 或完整短 ID;link_test_case_to_bug 和 list_test_case_links 接受 case_id 中的任一形式。在活动工作区中进行精确查找之前,会规范化周围的空白、字母大小写和数字填充。授权使用存储的工作区和项目,而不是 ID 前缀。不接受裸数字、部分 ID 和通配符搜索。批量用例数组、执行结果 case_id、bug ID、文件夹 ID 和套件 ID 仍仅限 UUID。链接记录保留 UUID case_id。
  • 编号间隙: 用例编号不必连续。编辑 URL 或递增编号可能导致用例缺失或不可访问;这不是保证的下一个用例操作。使用列表工具发现用例并遵循其分页。
  • 工作区范围: 相同的短 ID 可以存在于不同的工作区。MCP 仅在活动工作区中解析它;在使用另一个工作区的短 ID 之前切换工作区上下文。共享仪表板短 ID URL 时,保留 ?team=<case.team_id>,例如 /dashboard/test-cases/TEST-BA-CASE-123?team=<team-uuid>。UUID 永久链接保留现有的授权跨工作区行为。MCP 不构造永久链接。
  • get_test_case — 获取授权的用例记录,包括步骤和标识符。不加载变更历史或执行历史。示例:{"id":"TEST-BA-CASE-123"}。
  • 执行估算: get_test_case 返回 estimated_time_seconds 和兼容性别名 estimated_time,均以秒为单位。存储的 0 保持为 0;未知或缺失的估算为 null。当两个名称都存在时,规范字段优先,包括显式的 null;仅旧版的 estimated_time 值被视为秒,不进行转换。list_test_cases 使用 estimated_time_seconds。create_test_case 输入保持为 estimated_time,同样以秒为单位;REST 请求和响应使用 estimated_time_seconds。
  • list_test_case_folders — 列出可访问的文件夹。上限为 500;接受灵活的 project 选择器和 parent_folder_id 过滤器(使用 "root" 仅获取顶级)。API 密钥调用者需要 test_cases:read。
  • get_test_case_folder — 使用必需的 id(UUID)直接读取一个测试用例文件夹。仅返回文件夹记录,不隐式加载后代文件夹或测试用例。需要访问其工作区和项目;API 密钥调用者需要 test_cases:read。
  • 用于 list_test_cases、create_test_case 和 bulk_update_test_cases 的测试用例 type 值:functional(创建默认值)、regression、smoke、integration、performance、security、usability、exploratory。无效类型在写入前被拒绝。使用 integration 进行端到端流程;e2e、accessibility 和 other 不是接受的测试用例类型。自动化脚本类型是单独的契约。
  • create_test_case_folder — 在必需的 project(由 list_projects 返回)中创建文件夹(通过 parent_folder_id 嵌套最多 3 层)。需要贡献者或更高级别的工作区访问权限以及项目访问权限。API 密钥调用者还需要 test_cases:write。
  • update_test_case_folder — 按文件夹 UUID 更新:id、可选的 name(修剪后,1-120 个字符)、可空的 description(最多 50000 个字符)、可空的 parent_folder_id 和可空的 card_color。父 UUID 在同一工作区和项目内移动文件夹及其子树;null 将其移动到根目录。颜色接受小写调色板 #1e293b, #7c2d12, #713f12, #14532d, #1e3a5f, #312e81, #581c87, #831843, #4a044e, #fef08a, #fca5a5, #93c5fd;null 清除它。省略的字段被保留。至少需要一个更新字段。未知、拼写错误或无效字段会拒绝整个请求,不保存任何更改。自身/后代循环、与同级、直接父级或直接子级匹配的名称(忽略大小写和周围空格)以及超过 3 的子树深度(根深度为 0)被拒绝。后代深度原子更新;用例 ID 和成员资格不变。冲突的并发更改可能失败;重试前重新读取文件夹。需要活动的贡献者或更高级别的项目访问权限以及 API 密钥的 test_cases:write。示例:{"id":"folder-uuid","card_color":"#93c5fd"}。返回更新的 id、team_id、project_id、name、description、card_color、parent_folder_id、depth 和 updated_at。文件夹获取/列表读取也包括 card_color。
  • update_test_case — 通过 id 中的 UUID 或完整短 ID 修补现有用例,至少一个字段:name(或别名 title)、description、preconditions、steps、template_type、text_content、priority、type、status 或 folder_id。省略的字段被保留;steps 替换完整数组([] 清除)。显式的 null 清除描述、前置条件、text_content 或文件夹位置;空的 text_content 也会清除。如果同时发送 name 和 title,它们必须匹配。优先级和类型使用创建枚举;状态为 active、draft 或 deprecated。类型更改会使 type_tags 与新类型对齐,匹配 PATCH API。不支持工作区/项目移动或文件元数据写入。文件夹必须共享完全相同的工作区和项目。需要 test_cases:write。返回用例摘要、id、short_id、case_number 和 changed;未更改的值产生 changed: false。确认的更新带有未确认的历史条目时返回 warnings;不要重复更新以修复历史。在并发更改错误时,重试前重新读取用例。套件成员资格是单独的:使用下面的批量工具,而不是此工具上的 suite_id。不暴露删除工具。
  • bulk_update_test_cases — 对 1-500 个用例 UUID 应用一个操作;单个用例传递一个 ID。set_folder 接受 params.folder_id(要移动的 UUID,显式的 null 取消归档)。add_to_suite 和 remove_from_suite 接受 params.suite_id;添加永远不会移除其他成员资格或移动文件夹。还支持 set_priority、set_status、set_type、add_tags、remove_tags、pin 和 unpin。API 密钥需要 test_cases:write。返回 applied、skipped 和 errors;组织操作计数确认更改的行、去重 ID 并跳过现有成员资格。
  • 创建时放置: create_test_case 接受可选的 folder_id 和 suite_id。使用 list_test_case_folders 和 list_test_suites 发现目标(套件发现需要 API 密钥的 test_runs:read)。文件夹是单一目录位置;套件是多对多的测试计划成员资格。目标必须属于相同的授权工作区和精确项目,包括旧版无范围用例。不可访问的用例 ID 被跳过而不提供详细信息;不匹配的目标被拒绝。无效的创建目标在创建用例之前失败。
  • 部分创建: 用例创建和套件附加是单独的写入。如果附加失败,响应返回创建的用例 ID、suite_id: null 和 warnings 数组。不要重复 create_test_case;使用 add_to_suite 为该返回的 ID 重试 bulk_update_test_cases。
  • link_test_case_to_bug — 在测试用例和 bug 报告 UUID(verified_by、covers 或 relates)之间建立可追溯性。两个记录必须属于活动工作区和调用者可访问的项目。
  • list_test_case_links — 列出测试用例的所有可追溯性链接。
  • list_test_case_review_candidates — 死测试标志:never_run(创建后 90 天以上)、always_passes(90 天内连续 5 次以上通过)、always_skipped(连续 3 次以上跳过)。
  • mark_test_case_review_flags — 将当前的归档候选标志持久化到 test_cases.review_flag。通过 pg_cron 自动每周一 09:00 UTC 运行。
导入
  • Figma 导入(Enterprise)(仅限仪表板会话):上传 Figma 帧的 zip 导出(最多 100 MiB),Claude 分析每个屏幕并将测试用例草稿到您选择或创建的文件夹中。解码前,归档限制为 1,000 个条目,每个条目展开(解码)20 MiB,以及 100 MiB 的聚合展开数据,包括预算中的忽略文件和目录。解码的帧缓冲区必须匹配其声明的大小。格式错误的归档、大小不匹配和超限在 AI 分析前使作业失败;失败时保留原始上传以供重试,受存储清理策略约束。有效的归档进入多通道流水线(分类 → 每屏幕用例 → 跨共享前缀屏幕的流程级用例 → 自我批评),具有提示缓存、429 重试和每帧 AI 错误隔离。用例以 status=active 落地,标记为 ai_generated=true,带有 source='figma' 和 source_frame_name 保留指向原始帧的链接。使用平台 Anthropic 密钥 — 无需每团队 Claude 连接。
套件与运行
  • list_test_suites — 列出最多 50 个可访问的测试套件,并支持可选的灵活 project 过滤器。每个套件包含一个精确的整数 case_count:直接分配的所有状态用例,不包含子级,排除其他工作区或其他项目的用例(遗留的无项目用例仍包含在内)。计数不受获取的成员关系行数限制。API 密钥调用者需要 test_runs:read 以保持与执行工作器的向后兼容性。
  • get_test_suite — 直接读取一个测试套件,需要必需的 id(UUID)。仅返回套件记录,不会隐式加载子套件或成员测试用例。需要访问其工作区和项目;API 密钥调用者需要 test_runs:read。
  • create_test_suite — 在必需的 project 中创建套件,该值由 list_projects 返回。通过 parent_suite_id 最多嵌套 3 层。API 密钥调用者需要 test_cases:write。
  • update_test_suite — 按套件 UUID 更新:id、可选的 name(去除空格后,1-120 个字符)、可空的 description(最多 50000 个字符)以及 status(active/archived)。省略的字段和用例成员关系将被保留。需要活跃的贡献者或更高级别的项目访问权限以及 test_cases:write。不支持父级移动和固定;父级移动需要原子性的后代深度维护。返回 id、team_id、project_id、name、description、parent_suite_id、depth、status 和 updated_at。示例:{"id":"suite-uuid","name":"Checkout regression","description":null}。
  • list_test_runs — 列出测试运行,包含套件名称、执行人和通过/失败摘要。
  • create_test_run — 创建仪表板管理的套件运行。运行父套件会自动包含每个后代子套件中的所有用例(同时链接到两者的用例只添加一次)。每个 test_run_results 行记录用例来自哪个原始子套件,以便结果页面可以按来源分组。
外部代理执行

这些工具允许 Hermes 或其他代理运行时执行已批准的套件,而无需成为 QA 系统记录源。使用仅具有 test_runs:read 和 test_runs:write 的工作区范围密钥。套件提供项目边界;调用者不能覆盖它。

  • start_test_plan — 启动或恢复具有稳定 external_run_id 的不可变套件快照。重复的 ID 返回现有的匹配运行和第一页,而不是创建重复项。
  • get_test_run_plan — 读取规范运行状态和稳定的计划页面。传递之前的 next_cursor;页面默认包含 100 个用例,上限为 200 个。
  • report_test_results — 提交 1-200 个结果,状态为 passed、failed、blocked 或 skipped。精确重试是安全的;尝试用其他状态覆盖用例将被拒绝。
  • abort_test_run — 幂等地停止中断的运行,同时保留已接受的部分结果和规范摘要。

配额行为: 使用相同的 external_run_id 重试 start_test_plan 以恢复匹配的运行,而不会消耗另一次运行。删除数据不会重置每月运行使用量。

运行时边界: 用例快照排除凭据、文件正文和私有附件路径。结果证据在 MVP 中为文本。目标凭据保留在执行运行时中。浏览器、模型和网络成本仍由客户承担,客户必须限制目标访问和网络出口。人类仍负责缺陷和发布决策。

Hermes 代理指南 将此循环打包为 bugAgent 维护的社区技能。公共入门套件 包含可复制的配置和可安装的技能。这不是 Nous Research 的官方集成。

报告(第 1 层 + 第 4 层分析)
  • get_test_reports_overview — 某个时间窗口的标题 KPI(通过率、完成的运行次数、执行的用例数),以及与之前等效窗口的差异。与报告选项卡 KPI 条显示的数字相同。这不会创建已保存的项目报告。企业版 XLSX 项目报告及其计划在仪表板中管理;此版本中未为这些已保存的工件启用 MCP 工具。
  • get_test_reports_failures — 四个“要修复什么?”列表:failing_cases(失败率 ≥50%,最少 3 次运行)、flaky_cases(通过/失败翻转最多)、failing_suites(失败率 ≥30%,最少 5 次运行)、regressed_cases(最近失败且窗口内先前有通过)。

示例工作流

  1. create_test_case_folder → 创建文件夹树(例如 Smoke → Auth)。在同一项目中创建测试用例时使用返回的文件夹 ID;仪表板的“新建测试用例”表单也提供内联文件夹创建。
  2. create_test_case → 定义用例;使用 update_test_case 编辑内容,使用 bulk_update_test_cases 组织套件成员关系
  3. 示例工具/调用:{"name":"update_test_case","arguments":{"id":"00000000-0000-4000-8000-000000000001","title":"Verify login rejection","steps":[{"action":"Submit an incorrect password","expected":"An error is shown; no session is created"}],"status":"active","folder_id":null}}。省略的优先级、类型和描述保持不变。
  4. create_test_suite → 构建测试计划(子套件可选,最多 3 层深)
  5. create_test_run → 从父套件创建人工/仪表板管理的运行 — 子套件自动包含
  6. start_test_plan → 启动或恢复可重试安全的外部代理运行
  7. get_test_run_plan → 检索每个不可变的计划页面,然后在选定的运行时中执行
  8. report_test_results → 返回有界的结果批次;如果执行无法安全继续,调用 abort_test_run
  9. get_test_reports_failures → 运行完成后询问“本周要修复什么?”
  10. get_test_reports_overview → 逐周跟踪通过率趋势

⚡

团队增强

  • scale_team — 使用增强测试人员即时扩展您的 QA 团队。账户会自动配置测试人员访问权限。指定 team_size(1-10)、location、duration、budget,以及可选的 product_url、product_types 和 tech_levels。适用于企业版计划。在获得批准之前不会向您收费。

示例工作流

  1. scale_team → 在美国配置 5 名高级测试人员,为期 1 个月
  2. list_team_members → 验证新测试人员出现在您的团队中
  3. list_bug_reports → 查看增强测试人员提交的报告

📱

移动测试(企业版)

移动资源是项目范围的。在创建、导入和过滤列表中传递 project_id 或灵活的 project 选择器。自动化继承链接应用的项目;否则服务器使用工作区默认项目。未过滤的列表可能仍包含遗留的工作区级行,直到它们被迁移。

  • list_mobile_apps — 列出已上传的应用,支持可选的 project_id / project、platform 和 limit 过滤器。返回每个应用的 project_id,以便代理可以在同一项目中继续后续操作。
  • upload_mobile_app — 注册一个 APK(Android)或 IPA(iOS)应用,用于在真实设备上测试。需要 name、platform(android / ios)和 file_url;传入 project_id 可将其分配到当前项目。对于 iOS,上传 IPA 用于真实设备运行,然后使用仪表板上传模拟器 .app 构建以进行录制。
  • update_mobile_app — 用新版本替换应用二进制文件。清除缓存的 URL 和模拟器构建,以便所有自动化在下次运行时使用新版本。需要 app_id 和 file_url。可选:version。私有关联登录配置文件需要其活跃创建者;共享配置文件需要对同一项目具有活跃访问权限。计划继承受保护的自动化默认值。
  • list_mobile_automations — 列出移动自动化,支持可选的 project_id / project、app_id、status 和 limit 过滤器。结果包括 project_id 和关联的应用 ID。
  • create_mobile_automation — 创建测试脚本。需要 name、app_id、script_type(maestro 用于 YAML,appium 用于 Appium Python,appium_js 用于 Appium JavaScript)和 script;当应用尚未限定在项目范围内时,传入 project_id。对于单个经过外部验证的自包含 Maestro YAML 流程,将 execution_mode 设置为 browserstack_maestro;否则默认为 appium_actions。YAML appId 必须与关联应用存储的包名或 bundle ID 匹配;如果未存储,则第一个经过验证的原生流程将建立它。占位符应用 ID 和混淆的 Android 资源 ID 将被拒绝。支持内联 runFlow,但 v1 中拒绝外部流程/脚本文件引用。原生 Maestro 保留诸如 inputRandomText 和 copyTextFrom 之类的命令以及诸如 ${maestro.copiedText} 和 ${output.value} 之类的运行时表达式。同一项目的 credential_id 可以提供完整的 inputText 值,值为 ${USERNAME} / ${PASSWORD}。同一项目的 variable_profile_id 可以保存引用的 ${DATA_*} 值的默认值;每个引用的键都必须存在。数据配置文件仅包含非机密的合成数据。
  • import_mobile_script — 导入现有的移动测试脚本并将其转换为可运行的自动化,保留开发者自己的定位器,以便运行能够精确解析元素。支持的方言:Appium‑Python、WebdriverIO、Maestro(YAML 流程)和 Playwright(移动‑Web)。混淆的 Android 资源 ID 占位符将被跳过并在选择器映射 warnings 中报告。仅限 Android 应用。需要 name、app_id 和 script;可选 target_devices 和 project_id。返回自动化以及 action_count、检测到的 dialect 和选择器映射 warnings。
  • run_mobile_automation — 在真实设备上启动移动自动化。需要 automation_id;可选 device、os_version、credential_id 和原生 Maestro variable_profile_id。对于数据,省略 variable_profile_id 以继承自动化默认值,传入 null 以不使用配置文件,或传入同一项目的 UUID 以覆盖。每个引用的 ${DATA_*} 键都必须存在。私有登录配置文件需要其活跃创建者;共享登录配置文件需要对同一项目具有活跃访问权限。精确已知的凭据值会被过滤,精确的数据配置文件值会从持久化的文本证据中获得尽力而为的过滤;转换后的、部分的、编码的或应用派生的数据值可能会保留。授权的私有视频/截图仍然可用,并可能显示被测应用渲染的值,因此数据配置文件必须仅包含合成的非机密值。如果凭据编辑上下文不可用或无法证明清理是安全的,则保留详细的凭据文本,同时保留状态和可用的视觉证据。诊断需要工作区和项目授权;媒体链接在五分钟后过期。
  • list_mobile_runs — 获取授权的移动运行结果(状态、设备、结果摘要、私有视频和截图链接、BrowserStack 会话、过滤后的凭据原生 Maestro 日志和失败信息(在安全可用时),以及任何自动创建的 bug)。运行诊断强制执行工作区成员资格和项目访问权限。可选过滤器:project_id、automation_id、status(queued、running、passed、failed、error、archived)和 limit。默认排除已归档的运行。
  • create_login_profile — 创建只写的加密用户名/密码配置文件,可被移动、Web 自动化和探索性 AI 重用。需要 project_id、name、username 和 password;可选 visibility 为 private(默认)或 shared。私有配置文件仅限创建者使用。共享配置文件可供对同一项目具有访问权限的活跃成员使用。
  • create_mobile_credential — create_login_profile 的兼容名称;使用相同的输入和安全边界。
  • list_login_profiles — 仅列出调用者可见的配置文件,可选地针对一个 project_id。返回非机密元数据,包括 visibility;其他用户拥有的私有配置文件和不可访问的项目将被省略。
  • list_mobile_credentials — list_login_profiles 的兼容名称;绝不返回凭据机密。
  • update_login_profile — 重命名、轮换或更改 visibility。活跃创建者可以更新任何字段。活跃的工作区所有者/管理员可以重命名或轮换共享配置文件,但不能更改可见性;私有配置文件仍仅限创建者使用。
  • update_mobile_credential — update_login_profile 的兼容名称;使用相同的所有权和项目检查。
  • delete_login_profile — 创建者软删除,仅共享配置文件支持所有者/管理员生命周期恢复。未来的使用默认值被清除,而审计历史保留。
  • delete_mobile_credential — delete_login_profile 的兼容名称;历史引用保留用于审计。
  • create_mobile_variable_profile — 使用 project_id、name 和 variables 对象(例如 {"DATA_EMAIL":"qa@example.test","DATA_REGION":"ca"})创建可重用的、限定项目范围的合成测试数据。键必须是大写 DATA_* 标识符。配置文件允许 1–100 个字符串,每个值 4096 个 UTF-8 字节,总计 65536 字节。保留的凭据/运行时名称将被拒绝。绝不存储凭据、令牌、生产个人数据或其他机密。
  • list_mobile_variable_profiles — 列出一个授权 project_id 的移动/两者配置文件和其可读的非机密值。项目分配规则适用。现有配置文件和移动创建默认为 both;创建/更新接受 platform(mobile 或 both)。仅 Web 的配置文件被排除在移动目录访问和运行时使用之外。
  • update_mobile_variable_profile — 通过 id 重命名配置文件或替换其完整的 variables 对象。只有活跃创建者或活跃的工作区所有者/管理员可以更新它。
  • delete_mobile_variable_profile — 通过 id 软删除配置文件。只有活跃创建者或活跃的工作区所有者/管理员可以删除它;自动化默认值被清除,而历史运行引用保留。
  • list_mobile_schedules、create_mobile_schedule、delete_mobile_schedule — 列出、创建和删除真实设备计划。计划从其选定的自动化继承项目上下文、登录配置文件和非机密变量配置文件。私有登录配置文件需要其活跃创建者;共享登录配置文件需要对同一项目具有活跃访问权限。非机密变量配置文件保留其创建者或所有者/管理员策略。计划更改和删除仅限于活跃计划创建者或活跃的工作区所有者/管理员。

Web 测试数据目录

相同的非机密项目目录可从 Automate Web 获得。这些工具需要工作区的 automation 权利和 automations:write API 密钥范围,包括读取。它们不需要移动访问权限。值绝不与加密登录配置文件共享记录。目录支持尚未将配置文件值绑定或注入到 Web 运行中。

  • create_web_variable_profile:必需 project_id、name、variables;可选 platform(web 或 both),默认 web。使用与移动相同的 DATA_* 限制。返回配置文件,包括其 platform。
  • list_web_variable_profiles:必需 project_id;返回仅包含 Web/两者记录的 { profiles: [...] }。
  • get_web_variable_profile:必需 id;返回可访问的 Web/两者配置文件及其合成值。
  • update_web_variable_profile:必需 id;可选 name、完整替换 variables 或 platform(web 或 both)。需要活跃创建者或活跃的工作区所有者/管理员。要将两者缩小到移动,请使用具有移动访问权限的移动目录。
  • delete_web_variable_profile:必需 id;相同的管理权限。软删除并返回 { deleted: true },保留审计历史。

示例:使用 list_projects 解析项目,使用 {"project_id":"PROJECT_UUID","name":"Canadian checkout","platform":"both","variables":{"DATA_REGION":"CA"}} 调用 create_web_variable_profile,然后使用 list_web_variable_profiles 验证它。不可访问的项目/配置文件将失败,而不会暴露其值;无效数据或重复的项目范围名称将被拒绝。

示例工作流 — Android

  1. list_projects → 解析目标 project_id
  2. upload_mobile_app → 在该项目中注册 APK
  3. 在仪表板中安全录制,或使用 import_mobile_script / create_mobile_automation
  4. list_mobile_automations → 在同一项目中解析自动化
  5. run_mobile_automation → 在真实设备上触发它,可选地使用登录配置文件
  6. list_mobile_runs → 检查状态、结果摘要、私有视觉链接和 BrowserStack 会话元数据
  7. 失败会自动创建带有失败快照和步骤分解的 bug 报告

示例工作流 — iOS

  1. upload_mobile_app → 使用 project_id 注册您的 IPA 以进行真实设备运行
  2. 在应用详情页面上传模拟器 .app 构建(用于录制)
  3. 在浏览器中录制测试 → 从模拟器捕获操作
  4. run_mobile_automation → 在 iPhone 上触发保存的自动化(使用 IPA)
  5. update_mobile_app → 准备就绪时用新版本替换 IPA

示例工作流 — 原生 Maestro

  1. upload_mobile_app → 在目标项目中注册 APK 或 IPA
  2. create_mobile_credential → 可选地为经过身份验证的流程创建同一项目的配置文件
  3. create_mobile_variable_profile → 可选地创建流程使用的同一项目合成 DATA_* 值
  4. create_mobile_automation → 传入一个已知可用的 YAML 流程,其中包含关联应用的精确包名/bundle appId、script_type: maestro 和 execution_mode: browserstack_maestro。使用 ${USERNAME} / ${PASSWORD} 进行登录,使用 ${DATA_EMAIL} 风格的占位符进行合成输入;传入配置文件 ID 以保存默认值。
  5. run_mobile_automation → 选择兼容的设备,可选地覆盖登录或变量配置文件。省略变量配置文件以继承,或传入 null 以在单次运行中禁用它。
  6. list_mobile_runs → 检查授权的通过/失败摘要、私有视频/截图、过滤后的日志、真实步骤名称、详细失败信息和会话元数据。如果无法为凭据运行建立安全的清理,则保留详细的文本,同时保留状态和可用的视觉证据。

使用 AI 优化: 允许列表测试版可通过仪表板和 REST 优化端点获得。公开目录中尚不包含 Refine MCP 工具。

✅

合规与证据(企业版)

  • collect_compliance_evidence — 从已连接的服务(Cloudflare、GitHub、Sentry、Supabase、Railway)触发自动证据收集。返回运行 ID。收集 SSL/TLS 设置、WAF 状态、Dependabot 警报、错误趋势、部署历史等信息。
  • check_config_drift — 检查所有已连接服务是否存在与基线相比的安全配置漂移(SSL 模式、TLS 版本、HSTS、WAF 规则、安全标头)。
  • generate_access_review — 创建季度访问审查报告。审计团队成员、角色、MFA 状态、API 密钥使用情况,并生成建议(例如,撤销不活跃的密钥)。
  • get_security_events — 查询跨服务安全事件时间线。按来源(cloudflare、sentry、github)和严重级别(critical、high、medium、low、info)筛选。事件会在服务之间自动关联。

合规覆盖范围

这些工具帮助满足 SOC2(CC4.1、CC6.1、CC7.2、CC8.1)、ISO 27001(A.5.18、A.8.8、A.8.9、A.8.15-16、A.8.29)和 GDPR(第 5、25、32、33 条)的合规要求。

兼容客户端

bug Agent 可与任何支持 Model Context Protocol 的客户端配合使用。以下是一些常用客户端的设置指南:

打开 Settings → Developer → Edit Config,然后添加:

{
  "mcpServers": {
    "bugagent": {
      "type": "http",
      "url": "https://mcp.bugagent.com/mcp",
      "headers": {
        "Authorization": "Bearer ba_live_YOUR_KEY_HERE"
      }
    }
  }
}

保存后重启 Claude Desktop。

✳️

Cursor

打开 Settings → MCP Servers → Add Server,或编辑项目根目录下的 .cursor/mcp.json:

{
  "mcpServers": {
    "bugagent": {
      "type": "http",
      "url": "https://mcp.bugagent.com/mcp",
      "headers": {
        "Authorization": "Bearer ba_live_YOUR_KEY_HERE"
      }
    }
  }
}

🌊

Windsurf

打开 Settings → MCP → Add Server,或编辑您的 MCP 配置文件:

{
  "mcpServers": {
    "bugagent": {
      "type": "http",
      "url": "https://mcp.bugagent.com/mcp",
      "headers": {
        "Authorization": "Bearer ba_live_YOUR_KEY_HERE"
      }
    }
  }
}

直接从终端添加 bug Agent:

claude mcp add --transport http bugagent https://mcp.bugagent.com/mcp --header "Authorization: Bearer ba_live_YOUR_KEY_HERE"

这将直接连接到托管的 Streamable HTTP 服务器。

对于需要 stdio 的客户端,请使用已发布的 bugagent-mcp 桥接器:

  • 命令:npx
  • 命令行:npx -y bugagent-mcp
  • 参数:["-y", "bugagent-mcp"]
  • 环境变量:BUGAGENT_API_KEY

获取帮助

需要帮助?我们随时为您服务。

Discord 社区

加入我们的 Discord,获取实时支持和社区讨论。

邮件支持

support@bugagent.com — 我们通常在 24 小时内回复。