MCP
Connect bugAgent 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 bugAgent handles the rest.
Getting Started
bugAgent 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.
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.
Add bugAgent as an MCP server in your client's config (see setup below).
Describe a bug in natural language and bugAgent 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"
}
}
}
} 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 bugAgent 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.
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:
- Transport Type: select
Streamable HTTP - URL:
https://mcp.bugagent.com/mcp - Connection Type: select Proxy (the default — the Inspector proxies through a local Node process to bypass browser CORS)
- Click the Authentication tab → add a custom header:
- Header Name:
Authorization - Value:
Bearer ba_live_YOUR_KEY_HERE
- Header Name:
- Click Connect. The left panel lists the bugAgent tools allowed by the API key scopes you selected.
- 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.
Option 2 — Claude Desktop (Mac + Windows)
If you use the Claude Desktop app, you can add bugAgent 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
- Open Claude Desktop → menu bar Claude → Settings → Developer → Edit Config. This opens
~/Library/Application Support/Claude/claude_desktop_config.json. - Add the bugAgent entry under
mcpServers:claude_desktop_config.json{ "mcpServers": { "bugagent": { "type": "http", "url": "https://mcp.bugagent.com/mcp", "headers": { "Authorization": "Bearer ba_live_YOUR_KEY_HERE" } } } } - Save the file and fully quit Claude Desktop (Cmd+Q, not just close the window).
- Relaunch Claude Desktop. The tools hammer icon at the bottom of the chat input should now show bugAgent tools.
- Try it: type “List my 5 most recent bug reports” — Claude will call
list_bug_reportsautomatically.
Windows
- Open Claude Desktop → File → Settings → Developer → Edit Config. This opens
%APPDATA%\Claude\claude_desktop_config.json(typicallyC:\Users\YourName\AppData\Roaming\Claude\claude_desktop_config.json). - Add the same JSON block shown in the macOS section.
- Save the file and fully quit Claude Desktop from the system tray (right-click the Claude icon → Quit), then relaunch.
- The tools hammer icon will show bugAgent tools.
Option 3 — Claude Code (CLI)
If you use Claude Code from your terminal (the CLI version of Claude), register the bugAgent 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.”
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 bugAgent 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.
- Open Cursor → Settings (Cmd+, on Mac / Ctrl+, on Windows) → MCP in the left sidebar.
- Click + Add new MCP server.
- Select HTTP transport type.
- Fill in:
- Name:
bugagent - URL:
https://mcp.bugagent.com/mcp - Header name:
Authorization - Header value:
Bearer ba_live_YOUR_KEY_HERE
- Name:
- Click Save. Cursor shows a green indicator when connected.
- 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.
- Install the Continue extension from the VS Code marketplace.
- 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
- macOS:
- Add an
mcpServersentry:~/.continue/config.json{ "mcpServers": [ { "name": "bugagent", "type": "streamable-http", "url": "https://mcp.bugagent.com/mcp", "requestOptions": { "headers": { "Authorization": "Bearer ba_live_YOUR_KEY_HERE" } } } ] } - Save. Continue will auto-reload and show the bugAgent tools in the sidebar.
- 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 bugAgent 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 bugAgent workspace. The walkthrough below uses the Claude.ai web app as the most common example.
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. bugAgent 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.- In bugAgent: 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 theclient_idandclient_secretshown once on the success screen. - 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
- Server URL:
- Save. The host redirects you to bugAgent to sign in (Google or email/password — whichever method you use for the dashboard) and approve consent, then completes the OAuth handshake.
- 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 bugAgent 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)
If you want to test the server directly without any client, or integrate it into a script, you can hit the HTTP endpoint with curl. The MCP protocol is JSON-RPC 2.0 over Streamable HTTP.
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 Responses may be JSON or Server-Sent Events. Each SSE chunk is a line prefixed with data: followed by a JSON object. Standards-compliant clients should send Accept: application/json, text/event-stream; bugAgent currently normalizes missing or incomplete Accept values for compatibility.
ba_live_. If you’re still stuck, regenerate the key and retry.Access model and least-privilege scopes
The complete OAuth catalog contains 129 tools. A workspace API key sees only tools mapped to one of its selected scopes. Unauthenticated discovery may show tool metadata, but tools/call always requires an API key or OAuth token.
reports:readreports:read, reports:writeusage:readjira:readjira:writeautomations:writeautomations:runmobile:readmobile:read, mobile:writemobile:read, mobile:runreports:read, test_cases:read, test_cases:writetest_runs:read, test_runs:writeAPI keys are bound to the workspace where they are created. Tool inputs may narrow a call to an authorized project, but cannot switch the key to another workspace. Resolve project UUIDs with list_projects and reject ambiguous names.
For programmatic discovery and auditing, download the generated mcp-tool-index.json. It records all 129 runtime tools, API-key scope or OAuth-only access, entitlement family, input names, output-schema mode, and MCP annotations.
jira:read and jira:write.Tool outputs and errors
Successful calls return human-readable MCP content. Tools with a declared output schema also return typed top-level fields in structuredContent; other tools use structuredContent.result. Clients should tolerate additive fields and use the tool’s declared schema when one is available.
- Tool is missing: an authenticated API-key
tools/listresponse is filtered by scopes. Add only the required scope and reconnect the client. - Tool is visible but denied: the workspace plan, feature entitlement, role, project membership, or resource ownership can still reject a call.
- HTTP 401: the key or OAuth token is missing, expired, revoked, or invalid.
- HTTP 429: wait for
Retry-Afterwhen present and retry with exponential backoff and jitter. - JSON-RPC error: the transport or request envelope is invalid. Correct it before retrying.
isError: true: the tool ran but rejected the input or operation. Read the returned content; do not treat a successful HTTP status as a successful tool action.
For asynchronous runs, retain the returned run ID and poll the matching get/list tool at a bounded interval. For mutations, confirm the target workspace and project, and ask for human approval before destructive actions.
Try It — Plain-English Prompts
Once connected, you don’t need to know tool names or parameters. Describe what you want in plain English and your AI assistant calls the right bugAgent tool automatically.
Bug-report, scoped test-management, Playwright automation, mobile automation, and usage prompts are available to API keys with the matching scopes. Security, performance, exploratory, account, team, notes, time tracking, and other entries without a named API-key scope require delegated OAuth and any applicable plan entitlement.
Bug Reports
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 Test Management
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 Security & Performance
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 Automation
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 Exploratory 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? Usage & Stats
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? Quick Reference
Setup references for all eight connection options. API-key clients connect to https://mcp.bugagent.com/mcp with the header Authorization: Bearer ba_live_YOUR_KEY_HERE over Streamable HTTP; OAuth-aware hosts use connector credentials generated in the dashboard.
npx @modelcontextprotocol/inspector ~/Library/Application Support/Claude/claude_desktop_config.json %APPDATA%\Claude\claude_desktop_config.json claude mcp add --transport http bugagent https://mcp.bugagent.com/mcp --header "Authorization: Bearer ba_live_..." ~/.codex/config.toml ~/.cursor/mcp.json %USERPROFILE%\.cursor\mcp.json ~/.continue/config.json (macOS) / %USERPROFILE%\.continue\config.json (Windows) client_id and client_secret curl / Invoke-RestMethod — include Accept: application/json, text/event-stream Troubleshooting
401 Unauthorized Key is wrong, expired, or revoked. Check Settings → Developers — keys start with ba_live_. Regenerate if needed. Accept header required Send Accept: application/json, text/event-stream for standards-compliant Streamable HTTP. bugAgent currently normalizes missing or incomplete values, but integrations should not rely on that compatibility behavior. isError: true and returned content. A visible tool can still be denied by plan, role, feature entitlement, project membership, ownership, or invalid input. Check server health only after reading the tool error. isError: true. Read the response message for a plan, permission, input, or runtime error; Inspector v1 could return exit code 0 for the same failed tool response. ~/.codex/config.toml uses [mcp_servers.bugagent], set bearer_token_env_var = "BUGAGENT_API_KEY", and export that variable before starting Codex. Check codex --version if tools still do not appear. MCP Features
The complete interactive/OAuth catalog contains 129 tools. Workspace API keys discover only the least-privilege subset allowed by their selected scopes; account, API-key administration, team administration, premium testing, notes, and time-tracking tools are interactive-session only unless an entry explicitly names an API-key scope.
Bug Report Management
create_bug_report— File a new report with auto-classification across 19 types — bugs, feature requests, enhancements, technical debt, and more (title: 3-500 chars). Optionalattachmentsarray accepts base64-encoded files up to 400 MB each: any image, video, audio, PDF, or text/JSON. Setformat_description: trueto auto-reformat the description into a structured template using AI. Passtime_spent_secondsto track QA effort. Passpriority(urgent/high/normal/low) to set the fix urgency independently of severity. Passis_epic: trueto create an Epic, orparent_epic_id(UUID/short ID) to create a child in the same authorized project. The response includes hierarchy fields plusproject_id,project,short_id,legacy_short_id, andproject_short_id.list_bug_reports— List and filter reports (max 100 per page). Project filters are applied server-side before pagination. Filter byproject(UUID, slug, exact name, or ticket prefix),project_id,project_slug,project_prefix,workspace(UUID, exact name, or workspace ticket prefix),workspace_id/team_id,is_epic,type,severity,status,resolution,root_cause, orreporter_user_id. Thesearchfilter searches report text; digits-only input such as366is an exact lookup against both legacy and project ticket numbers, so unrelated text containing those digits is excluded. Each result includes tenant-scoped people/project identifiers plusis_epic,parent_epic_id,parent_epic, and boundedepic_progress. Report-read tools do not expose member email addresses.pick_next_bug— Returns the next bug(s) the agent loop should work on, in priority order (S1 → S2 → S3, oldest first within each bucket). Automatically scoped to your workspace — returns tickets across all projects in your team withstatusnew,awaiting-triage, orconfirmedand severity S1-S3. Read-only — does not atomically claim tickets. Optionalseverity(single tier),limit(1-50, default 1). Returns an object withcountandbugs; each bug is a reduced queue row rather than the fulllist_bug_reportsshape. Pair withclaim_bugfor the read-then-claim pattern.claim_bug— Atomically transition a bug fromstatusnew,awaiting-triage, orconfirmedtostatus='in-progress', setassigned_toto the calling user, and stampclaimed_at=NOW(). Race-free across concurrent callers via Postgres' UPDATE-WHERE-RETURNING pattern — if two agents callclaim_bugon the same id in close succession, exactly one getsclaimed:truewith the bug body and the other getsclaimed:falsewith a reason string. Successful responses includereporter_user_id,reporter_name,assigned_to, andassignee_name. A pg_cron reaper releases stale claims (status=in-progress+claimed_at> 30 minutes old) back tonewautomatically, so a crashed agent's tickets re-enter the queue without manual intervention. Inputs:id(UUID or short ID).get_bug_report— Get full details of a report by UUID or workspace/project short ID. Returns the standard people/project/quality fields plusis_epic, parent identity, aggregate progress, and a bounded first child page for Epics.list_epic_children— Paginate an Epic's child reports withid,limit(1–100), andoffset. Returnschildren,total,has_more, and SQL-aggregatedepic_progresswithout loading every child report.update_bug_report— Update standard report fields plusis_epicandparent_epic_id. Passparent_epic_id: nullto detach; reparent/detach is atomic and requires same-workspace, same-project authorization. Promoting to an Epic detaches an existing parent, while an Epic with children cannot be demoted. Existing status/resolution/root-cause and assignment notification rules still apply. Astatuschange on a Jira-linked report is mirrored to the Jira issue via its workflow transitions when exactly one legal transition matches the mapped status; otherwise the issue is left untouched.add_comment— Add a comment to a bug report (UUID or short ID, body 1-10000 chars). If the report is synced to Jira, the comment is automatically pushed to the linked Jira issue.list_comments— List a report's full comment thread, oldest first — each comment with author name,parentId(threaded replies), and timestamps. Comments are not part ofget_bug_report, so this is how you read a ticket's discussion. Accepts UUID or short ID.link_bug_reports— Create a directional semantic link between two reports in the same authorized project. Forparent-of, the from-report must be an Epic and the to-report a standard child. Preferparent_epic_idon create/update for Epic assignment.unlink_bug_reports— Remove a previously-created bug-report link by its UUID (link_id, returned bylink_bug_reportsorlist_bug_report_links).list_bug_report_links— List every user-curated link touching a bug report. Returns each link as it reads from the supplied report's perspective — e.g. a storedduplicate-ofrow where this report is the target renders asduplicated-by;parent-ofwhere this report is the target renders assubtask-of;depends-onwhere this report is the target renders asblocks;testing-blocked-bywhere this report is the target renders asblocks-testing.related-tois symmetric. Complements the auto-detectedsimilar_reportsfield returned byget_bug_report.classify_bug— Classify a description into one of 19 report types (bugs, features, enhancements, etc.) with confidence scoreflush_reports— Bulk delete old reports (admin only)
Usage & Analytics
get_usage— Check usage against plan limits. API-key callers requireusage:read.get_stats— Daily counts, type/severity/status breakdowns
Project Management
list_projects— List accessible projects withid,name,slug,ticket_prefix, description, and default status. Use those values with bug-report and test-catalog tools to target the correct project.create_project— Create a new project (auto-becomes default if first)delete_project— Permanently delete a project and all associated data (bug reports, automations, test cases, mobile apps, schedules, geo snaps, notes, time entries). Only owner/manager. Cannot delete last project. Storage is freed automaticallyexport_okf_bundle— Export a project’s QA knowledge — bug reports, test cases, automations, and performance, security, and exploratory tests — as an OKF/OQA markdown bundle (the Open Query Agent format used by oqa.ai). Defaults to the active project; pass the optionalproject(slug or name) to export a different one. Returns the list of files in the bundle plus the bundle itself as a base64-encoded zip
Authentication & Account
register_account— Create a new account (password: 8-128 chars, rate limited: 5/15min)login— Sign in and receive access tokens (rate limited: 5/15min)update_profile— Update display namechange_password— Change account passwordget_settings— Read profile and notification preferences.update_settings— Update supported profile and notification preferences. OAuth-only mutation.
API Key Management
generate_api_key— Create a named API keylist_api_keys— List active keys (prefix only)regenerate_api_key— Revoke and replace a keydelete_api_key— Permanently revoke a key
Team Management
list_team_members— List all members of your workspace with roles, status, and booster flagsinvite_team_member— Invite a user by email (managers can invite contributors and managers; only owners can invite admins). 5-day expiry link
Integrations
Jira Cloud report sync is included on Free and Enterprise. A workspace manager must first connect Jira in the dashboard. Workspace API keys can then use jira:read for comparison and jira:write for sync/merge; Atlassian plan and API limits still apply.
sync_to_jira— Push a report to Jira using the team's shared connection. Routes to the Jira project mapped to the report's bugAgent project (workspace default as fallback), and translates severity through that project's field map. OptionalprojectKeyoverrides the routing. You usually don't need this: when the project's sync mode isauto_neworauto_all, reports you create are pushed automatically — call it for a manual push inmanualmode, or to target a specific project.check_jira_sync— Compare a linked report against its Jira issue (title, severity, status, type) and list new Jira comments. Read-only; run it before merging.merge_jira_sync— Bi-directional merge for one linked report. Severity is last-updated-wins; comments and attachments sync both ways; nothing is deleted on either side.push_to_claude— Generate (or regenerate) the Developer Notes for a bug report — root cause, suggested fix, verification steps, and risk assessment. Accepts UUID or short ID (WRKID-545). Uses platform keys — no per-team Claude connection required. Runs an adaptive chain: three steps ons3/mediumors4/lowbugs (Sonnet draft → OpenAIgpt-5critique → Sonnet synthesis), five steps on the top-two severity buckets —s1/criticalors2/high— (draft → critique → Sonnet rebuttal → Claude Opus adjudicator that reads the full transcript and writes the final notes with independent judgment). Response exposes every round:analysis,draft,critique,rebuttal,challenger_model,adjudicator_model, and adebatedflag. Any step failing falls through to the next-best answer. Auto-fires on bug creation; usually only called for manual regenerate.analyze_fix_area— Generate (or regenerate) the "Likely Fix Area" sub-block of Developer Notes — a narrow Sonnet output that names where in the codebase the fix most likely belongs. Accepts UUID or short ID. Uses the platform Anthropic key. When the team has agithub_connectionsrow and the project has agithub_repomapped, output is grounded in real file snippets from the connected repo; otherwise falls back to general guidance with a nudge to connect a repo. Returnslikely_fix_areatext,generated_at,repo_used, and agroundedflag. Auto-fires on bug creation — agents typically only need to call this for manual regenerate.upgrade_plan— Get the sales-assisted Enterprise enrollment link
Performance Testing
create_performance_test— Create a performance test config with URL, device, virtual users, duration, score threshold, and auto-bug creation toggle. Enterprise onlyrun_performance_test— Trigger a page audit and load test for a web performance test. Returns a run ID to poll for results. Mobile app profiling runs are triggered from the dashboardget_performance_results— Get full results including Lighthouse scores (Performance, Accessibility, Best Practices, SEO), Core Web Vitals (LCP, FID, CLS, FCP, TTFB, INP, TBT, SI), and load test metrics (VUs, requests, RPS, p50/p90/p95/p99 latencies)list_performance_tests— List all performance test configurations for the current teamget_performance_usage— Check monthly performance test usage. Performance testing is Enterprise-only. Free=0, Enterprise=unlimited
Example Workflow
get_performance_usage→ check remaining quotacreate_performance_test→ configure a test for your URLrun_performance_test→ trigger the audit + load testget_performance_results→ review scores and vitals
Security Scanning
create_security_scan— Create a security scan configuration. Web scans use Quick Scanner + Nuclei (4,000+ templates) with three depth levels and optional authenticated scanning. Mobile scans use MobSF for APK/IPA binary analysis. Configurable auto-bug creation with severity thresholds. Enterprise onlyrun_security_scan— Trigger a vulnerability scan. Web scans require DNS domain verification. Mobile scans require an uploaded app. Returns a run ID to poll for resultsget_security_results— Get full results including security score (0-100), findings categorized by severity (Critical, High, Medium, Low, Info) with CWE references, OWASP mappings, evidence, and remediation guidancelist_security_scans— List all security scan configurations for the current team with last score and auth/depth badgesget_security_usage— Check monthly security scan usage. Security scanning is Enterprise-only. Enterprise=unlimitedlist_security_schedules— List all scheduled security scans for the team with cron, timezone, enabled state, next run, and notification settings. Joins with the parent scan config (name, scan_type, target_url)create_security_schedule— Create a recurring schedule for a security scan. Requiresscan_idandcron_expression. One schedule per scan config. Optionaltimezone,notify_on_fail(none/email/slack/both),notify_email,slack_channel_id. Every run counts against your monthly cap; admin users bypass the cap. Scan depth is always read from the scan config at run timedelete_security_schedule— Delete a scheduled security scan. Does not affect the parent scan config or completed runs
Example Workflow
get_security_usage→ check remaining quotacreate_security_scan→ configure a scan for your URL or reporun_security_scan→ trigger a one-off vulnerability scancreate_security_schedule→ automate recurring runs (e.g. weekly SAST on main branch)get_security_results→ review findings and remediation
Code Review
list_code_reviews— List recent AI code reviews for the team. Returns quality scores, severity counts, PR info, and timestamps. Enterprise onlyget_code_review— Get a code review with all findings. Each finding includes severity, category (bug/security/performance/style/logic/maintainability), title, description, code suggestion, file path, and line numbersget_code_review_usage— Check code review usage. AI code review is Enterprise-only; unlimited on Enterpriseget_code_review_analytics— Get review analytics: trends, finding categories/sources, severity breakdown, velocity metrics, top repos/authors. Supports 7/30/90-day lookback
Example Workflow
get_code_review_usage→ check remaining reviews- Review a PR in the dashboard at
/dashboard/code-review list_code_reviews→ see recent reviewsget_code_review→ get findings and suggestions
Exploratory AI
Multi-agent autonomous website bug finder with up to 10 parallel agents, each using a different testing strategy.
list_explorations— List Exploratory AI configs for the teamcreate_exploration— Create a new exploration. Acceptsagent_count(1–10, max 10) to run multiple parallel agents with unique strategies: happy_path, edge_case, security, accessibility, error_path, performance, mobile, data_integrity, navigation, customget_exploration— Get exploration config with agent settings, safe authentication metadata, and recent runs. Passwords and ciphertext are never returned.get_exploration_run— Get run results with per-agent progress, phase data, findings with agent attribution (agent_index,agent_strategy), and linked bugsget_exploration_usage— Check monthly usage. Exploratory AI is Enterprise-only; Enterprise: unlimited (10 agents)
Example Workflow
create_explorationwithagent_count: 5→ configure 5 parallel agents- Trigger a run from the dashboard or via
POST /api/explorations/run get_exploration_run→ poll for per-agent progress and findings- View deduplicated findings with agent attribution in the dashboard
Notes
list_notes— List notes with optional keyword, project, visibility, folder, tag, archive, wiki, date-range, and sort filters. Returns notes the user owns or notes shared with them.create_note— Create a note in one of 5 formats:markdown,plain,bugtemplate,checklist,outline. Setvisibilitytoprivateorshared. Auto-title from first 30 characters if no title provided. Optionalattachmentsarray accepts base64-encoded files up to 400 MB each: any image, video, audio, PDF, or text/JSON. Passtime_spent_secondsto track QA effort.get_note— Get full note details including content and attachments. Requiresid.update_note— Update title, content, format, visibility, project, ortime_spent_seconds. Pass anattachmentsarray to append new files (max 400 MB each) to the note’s existing attachments without replacing them. Only the author can update. Requiresid.delete_note— Permanently delete a note and its attachments. Only the author can delete. Requiresid.list_note_folders— List note/wiki folders, optionally scoped to a project.create_note_folder— Create a project-scoped note/wiki folder with optional parent, visibility, favorite, and teammate access settings.
Example Workflow
create_note→ start a testing session noteupdate_note→ append observations as you testlist_notes→ search past notes by keyword or projectget_note→ retrieve full note with attachments
Automation
create_automation— Create a new automation with a custom Playwright script (no FAB recording required). Requiresname. Optional:target_url(auto-derived from the firstpage.goto(...)URL in the script if omitted),script(Node.js/JavaScript/TypeScript or Python — language is auto-detected; defaults to a placeholder),status(draftoractive, default:draft),project_id. Returns the automationid. Tip — Duplicate an automation: useget_automationto fetch the original script, then callcreate_automationwithnameset to"[Copy] Original Name"and pass the originalscript,target_url, andproject_id. The duplicate starts indraftstatus with no version history.list_automations— List Playwright automation scripts. Filter byproject_idorstatus(draft,active,paused). Returns array of automations with name, target_url, last_run_status, and run_count.get_automation— Get full automation details including Playwright script and recent runs. Requiresid. Returns the automation with the livescript, ascript_versionsstack (oldest-first, up to 100 prior entries, each{ script, source, timestamp }), and arecent_runsarray where each run carries thescript_version_label/script_version_sourcethat executed. Call this beforerun_automationif you need to pick a specific historical version.run_automation— Trigger an immediate run of a Playwright test. Requiresautomation_id. Self-healing locators (automatic): when a locator action times out, the runner asks Claude for a working selector and retries the step once — assertions are never healed, so real regressions still fail — and each heal is logged in the run stdout. Virtual mode (default): optionaldevicefor viewport emulation (e.g.desktop,iphone-15). Live mode: setbrowserstack: truewithbs_browser(chrome,firefox,safari,edge),bs_os(Windows,OS X), andbs_os_versionto run on a real desktop browser. Live real-mobile: setbs_os: "android"(devices:"Samsung Galaxy S25 Ultra","Google Pixel 10","OnePlus 13R") orbs_os: "ios"(devices:"iPhone 17 Pro Max","iPhone 16 Pro Max","iPhone 15 Pro Max") and pass the device name inbs_os_version. Node.js scripts route throughbrowserstack-node-sdk(covers desktop + Android + iPhone). Python scripts route throughbrowserstack-sdk(pytest-playwright) and cover desktop only — real mobile via Python isn't supported because pytest-playwright'sbrowser_type.connect()can't drive BrowserStack's real-mobile endpoints. Video and network logs captured automatically; console logs desktop-only. Version replay: inspectscript_versionswithget_automation, then pass the preferred durableversion_label(for example"v103"). Legacyversion_indexremains supported but must not be combined withversion_label. Default: when both selectors are omitted, the current live script runs. Pruned labels and invalid indices are rejected instead of silently running current. The run record stores the exact snapshot that ran, and any bug report auto-created from a failed run deep-links back to that version in the editor.list_automation_runs— List recent runs for an automation. Requiresautomation_id. Returns runs with status, duration_ms, and error_message.list_schedules— List all scheduled web automation runs with cron, timezone, device, and notification settingscreate_schedule— Create a scheduled web automation run. Requiresautomation_idandcron_expression. Supports optional device, timezone, failure notification, email, and Slack channel settings.delete_schedule— Delete a scheduled web automation runlist_mobile_schedules— List all scheduled mobile automation runs with devices, cron, timezone, and notificationscreate_mobile_schedule— Create a scheduled mobile automation run on real devices. Requiresautomation_idandcron_expression;devicesis optional.delete_mobile_schedule— Delete a scheduled mobile automation runoptimize_automation_script— Send a Playwright script to Sonnet 4 for AI-powered optimization. Applies a 12-point checklist that fixes selectors, wait strategies, assertions, error handling, auth patterns, mobile compatibility, and strict mode. Requiresautomation_id. The current script version is saved before optimization. Returns the optimized script and a changes summary.undo_automation_script— Revert an automation script to its previous version. Up to 100 previous versions are retained. Requiresautomation_id. Returns the restored script and the number of versions remaining.
Example Workflow
create_automation→ create a test with a custom scriptlist_automations→ browse available testsget_automation→ inspect the Playwright scriptrun_automation→ trigger the testlist_automation_runs→ check results and duration
Time Tracking
list_time_entries— List time entries for the team. Filter byperiod(today,week,month,all),project_id,category, andsort(newest,oldest,most_time,least_time). Enterprise plan only.create_time_entry— Log time spent on QA tasks. Requiresdescription,category, andduration_minutes. Optionally setproject_idandentry_date(defaults to today). Enterprise plan only.update_time_entry— Update an existing time entry. Requiresid. Can updatedescription,category,duration_minutes,project_id, orentry_date. Enterprise plan only.delete_time_entry— Permanently delete a time entry. Requiresid. Enterprise plan only.
Example Workflow
create_time_entry→ log 45 minutes of regression testinglist_time_entries→ view this week's time entriesupdate_time_entry→ adjust duration or categorydelete_time_entry→ remove an incorrect entry
Test Cases
Test management with hierarchical folders, nested suites (up to 3 levels deep with sub-suite auto-expansion on runs), drag-drop reorder, and an analytics Reports tab with KPI trends, failure analysis, suite health, coverage, and tester productivity. All tools call Supabase directly — no HTTP roundtrip, same latency as the dashboard.
Free limits: 10 stored test cases, 1 suite, 3 folders, 128 KB of structured content per case, 2 active workspace API keys, and 10 total test runs per UTC calendar month. Up to 3 of those runs may use Hermes or another external agent, with 1 active external run and at most 10 cases in each external plan. Free API-key MCP traffic is limited to 30 requests per key and 60 per workspace per minute. Enterprise test case storage and runs are unlimited, subject to general platform protections.
AI test-case generation, AI tag suggestions, Figma import, and test-case file attachments require Enterprise. The 128 KB Free structured-content bound is separate from Enterprise file attachments. Free can store URL references. Core MCP test-case tools remain available on Free within the limits above.
Hands-free execution: the run review page is a carousel with one case visible at a time, keyboard shortcuts (P Pass · F Fail · B Block · S Skip), and voice control. Click the mic, then say "Pass", "Fail", "Block", "Skip", "Next", "Previous", "Add notes" (transcribes into the notes field), "Save notes", or "Voice off". Auto-advances to the next untested case on success results; stays put on Fail so testers can dictate details and spawn a bug. Works in Chrome, Edge, and Safari.
Cases & Folders
list_test_cases— List accessible test cases with an optionalprojectselector plussearch,priority,type,status, andsortfilters. API-key callers requiretest_cases:read.create_test_case— Create a test case in the requiredprojectselector (UUID, slug, exact name, or ticket prefix; calllist_projectsfirst). Two template variants:steps(default) — per-step{ action, expected }grid via thestepsarray;text— single free-form description viatext_content. Both fields can be sent in the same call. Optionalurlsarray (max 10 http/https URLs) attaches reference links and is available on Free. File attachments require Enterprise and a dashboard session. API-key callers requiretest_cases:write.get_test_case— Get full test case details including steps and execution history.list_test_case_folders— List accessible folders. Capped at 500; accepts a flexibleprojectselector andparent_folder_idfilter (use"root"for top-level only). API-key callers requiretest_cases:read.create_test_case_folder— Create a folder in the requiredprojectreturned bylist_projects(nests up to 3 levels viaparent_folder_id). API-key callers requiretest_cases:write.bulk_update_test_cases— Apply one action to up to 500 cases at once:set_priority,set_status,set_type,add_tags,remove_tags,add_to_suite,pin,unpin.link_test_case_to_bug— Establish traceability between a test case and a bug report (verified_by,covers, orrelates).list_test_case_links— List all traceability links for a test case.list_test_case_review_candidates— Dead-test flags:never_run(90+ days since creation),always_passes(5+ consecutive passes in 90d),always_skipped(3+ consecutive skips).mark_test_case_review_flags— Persist current archive-candidate flags ontotest_cases.review_flag. Runs automatically every Monday 09:00 UTC via pg_cron.
Imports
- Figma import (Enterprise) (dashboard session only): upload a zip export of Figma frames (up to 100 MB), Claude analyzes each screen and drafts test cases into a folder you pick or create. Multi-pass pipeline (classify → per-screen cases → flow-level cases across shared-prefix screens → self-critique) with prompt caching, 429 retry, and per-frame error isolation so one bad frame doesn't fail the batch. Cases land as
status=active, taggedai_generated=true, withsource='figma'andsource_frame_namepreserving a link to the original frame. Uses the platform Anthropic key — no per-team Claude connection required.
Suites & Runs
list_test_suites— List accessible test suites with an optional flexibleprojectfilter. API-key callers requiretest_runs:readfor backward compatibility with execution workers.create_test_suite— Create a suite in the requiredprojectreturned bylist_projects. Nests up to 3 levels viaparent_suite_id. API-key callers requiretest_cases:write.list_test_runs— List test runs with suite name, assignee, and pass/fail summary.create_test_run— Create a dashboard-managed suite run. Running a parent suite automatically includes every case in every descendant sub-suite (a case linked to both is added exactly once). Eachtest_run_resultsrow records which originating sub-suite the case came from, so result pages can group by origin.
External Agent Execution
These tools let Hermes or another agent runtime execute an approved suite without becoming the QA system of record. Use a workspace-scoped key with only test_runs:read and test_runs:write. The suite supplies the project boundary; callers cannot override it.
start_test_plan— Start or resume an immutable suite snapshot with a stableexternal_run_id. A repeated ID returns the existing matching run and first page instead of creating a duplicate.get_test_run_plan— Read canonical run state and a stable plan page. Pass the previousnext_cursor; pages default to 100 cases and are capped at 200.report_test_results— Submit 1–200 results withpassed,failed,blocked, orskippedstatus. Exact retries are safe; trying to overwrite a case with another status is rejected.abort_test_run— Idempotently stop an interrupted run while preserving accepted partial results and the canonical summary.
Quota behavior: retry start_test_plan with the same external_run_id to resume the matching run without consuming another run. Deleting data does not reset monthly run usage.
Runtime boundary: case snapshots exclude credentials, file bodies, and private attachment paths. Result evidence is text in the MVP. Target credentials stay in the execution runtime. Browser, model, and network costs remain customer-side, and customers must restrict target access and network egress. A human remains responsible for defect and release decisions.
The Hermes Agent guide packages this loop as a bugAgent-maintained community skill. The public starter kit contains a copy-ready config and installable skill. It is not an official Nous Research integration.
Reports (Tier 1 + Tier 4 analytics)
get_test_reports_overview— Headline KPIs for a window (pass rate, runs completed, cases executed) with deltas vs the prior equivalent window. Same numbers the Reports tab KPI strip shows.get_test_reports_failures— Four "what to fix?" lists:failing_cases(≥50% fail, min 3 runs),flaky_cases(most pass/fail flips),failing_suites(≥30% fail, min 5 runs),regressed_cases(most-recent fail with an earlier pass in the window).
Example Workflow
create_test_case_folder→ make a folder tree (e.g. Smoke → Auth)create_test_case→ define cases; move them into folders withbulk_update_test_casescreate_test_suite→ build a test plan (sub-suites optional, up to 3 levels deep)create_test_run→ create a human/dashboard-managed run from a parent suite — sub-suites auto-includedstart_test_plan→ start or resume a retry-safe external-agent runget_test_run_plan→ retrieve every immutable plan page, then execute it in the selected runtimereport_test_results→ return bounded result batches; callabort_test_runif execution cannot continue safelyget_test_reports_failures→ ask "what to fix this week?" once the run completesget_test_reports_overview→ track the pass-rate trend week over week
Team Booster
scale_team— Instantly scale your QA team with booster testers. Accounts are provisioned automatically with tester access. Specifyteam_size(1–10),location,duration,budget, and optionallyproduct_url,product_types, andtech_levels. Available on the Enterprise plan. You will not be charged until approval has been given.
Example Workflow
scale_team→ provision 5 senior testers in the US for 1 monthlist_team_members→ verify new testers appear in your teamlist_bug_reports→ review reports filed by booster testers
Mobile Testing (Enterprise)
Mobile resources are project-scoped. Pass project_id or a flexible project selector on creates, imports, and filtered lists. Automations inherit the linked app’s project; otherwise the server uses the workspace default project. Unfiltered lists may still include legacy workspace-level rows until they are migrated.
list_mobile_apps— List uploaded apps with optionalproject_id/project,platform, andlimitfilters. Returns each app’sproject_idso agents can keep subsequent operations in the same project.upload_mobile_app— Register an APK (Android) or IPA (iOS) app for testing on real devices. Requiresname,platform(android/ios), andfile_url; passproject_idto assign it to the active project. For iOS, upload the IPA for real-device runs, then use the dashboard to upload a simulator.appbuild for recording.update_mobile_app— Replace an app binary with a new version. Clears cached URLs and simulator builds so all automations use the new version on next run. Requiresapp_idandfile_url. Optional:version. Private linked login profiles require their active creator; shared profiles require active access to the same project. Schedules inherit the protected automation default.list_mobile_automations— List mobile automations with optionalproject_id/project,app_id,status, andlimitfilters. Results includeproject_idand the linked app ID.create_mobile_automation— Create a test script. Requiresname,app_id,script_type(maestrofor YAML,appiumfor Appium Python,appium_jsfor Appium JavaScript), andscript; passproject_idwhen the app is not already project-scoped. For one externally validated, self-contained Maestro YAML flow, setexecution_modetobrowserstack_maestro; otherwise it defaults toappium_actions. The YAMLappIdmust match the linked app’s stored package or bundle ID; if none is stored, the first validated native flow establishes it. Placeholder app IDs and obfuscated Android resource IDs are rejected. InlinerunFlowis supported, but external flow/script file references are rejected in v1. Native Maestro preserves commands such asinputRandomTextandcopyTextFromplus runtime expressions such as${maestro.copiedText}and${output.value}. A same-projectcredential_idmay supply completeinputTextvalues of${USERNAME}/${PASSWORD}. A same-projectvariable_profile_idmay save the default for referenced${DATA_*}values; every referenced key must exist. Data profiles are non-secret synthetic data only.import_mobile_script— Import an existing mobile test script and turn it into a runnable automation, preserving the developer’s own locators so runs resolve elements precisely. Supported dialects: Appium‑Python, WebdriverIO, Maestro (YAML flows), and Playwright (mobile‑web). Obfuscated Android resource-ID placeholders are skipped and reported in selector-mappingwarnings. Android apps only. Requiresname,app_id, andscript; optionaltarget_devicesandproject_id. Returns the automation plusaction_count, detecteddialect, and selector-mappingwarnings.run_mobile_automation— Start a mobile automation on a real device. Requiresautomation_id; optionaldevice,os_version,credential_id, and native-Maestrovariable_profile_id. For data, omitvariable_profile_idto inherit the automation default, passnullto use no profile, or pass a same-project UUID to override. Every referenced${DATA_*}key must exist. A private login profile requires its active creator; a shared login profile requires active same-project access. Exact known credential values are filtered and exact data-profile values receive best-effort filtering from persisted textual evidence; transformed, partial, encoded, or app-derived data values may remain. Authorized private video/screenshots remain available and may show values rendered by the tested app, so data profiles must contain only synthetic non-secret values. If credential redaction context is unavailable or sanitization cannot be proven safe, detailed credentialed text is withheld while status and available visual evidence remain. Diagnostics require workspace and project authorization; media links expire after five minutes.list_mobile_runs— Get authorized mobile run results (status, device, result summary, private video and screenshot links, BrowserStack session, filtered credentialed native Maestro logs and failures when safely available, and any auto-created bug). Workspace membership and project access are enforced for run diagnostics. Optional filters:project_id,automation_id,status(queued,running,passed,failed,error,archived), andlimit. Archived runs are excluded by default.create_login_profile— Create a write-only encrypted username/password profile reusable by Mobile, Web Automation, and Exploratory AI. Requiresproject_id,name,username, andpassword; optionalvisibilityisprivate(default) orshared. Private profiles are creator-only. Shared profiles are usable by active members with access to the same project.create_mobile_credential— Compatibility name forcreate_login_profile; uses the same inputs and security boundary.list_login_profiles— List only profiles visible to the caller, optionally for oneproject_id. Returns non-secret metadata includingvisibility; private profiles owned by other users and inaccessible projects are omitted.list_mobile_credentials— Compatibility name forlist_login_profiles; never returns credential secrets.update_login_profile— Rename, rotate, or changevisibility. The active creator may update any field. An active workspace owner/admin may rename or rotate a shared profile but cannot change visibility; private profiles remain creator-only.update_mobile_credential— Compatibility name forupdate_login_profile; uses the same ownership and project checks.delete_login_profile— Creator soft delete, with owner/admin lifecycle recovery for shared profiles only. Future-use defaults are cleared while audit history remains.delete_mobile_credential— Compatibility name fordelete_login_profile; historical references remain for audit.create_mobile_variable_profile— Create reusable, project-scoped synthetic test data withproject_id,name, and avariablesobject such as{"DATA_EMAIL":"qa@example.test","DATA_REGION":"ca"}. Keys must be uppercaseDATA_*identifiers. Profiles allow 1–100 strings, 4096 UTF-8 bytes per value, and 65536 bytes total. Reserved credential/runtime names are rejected. Never store credentials, tokens, production personal data, or other secrets.list_mobile_variable_profiles— List profiles and their readable non-secret values for one authorizedproject_id. Project assignment rules apply.update_mobile_variable_profile— Rename a profile or replace its completevariablesobject byid. Only the active creator or an active workspace owner/admin may update it.delete_mobile_variable_profile— Soft-delete a profile byid. Only the active creator or an active workspace owner/admin may delete it; automation defaults are cleared while historical run references remain.list_mobile_schedules,create_mobile_schedule,delete_mobile_schedule— List, create, and remove real-device schedules. Schedules inherit project context, login profile, and non-secret variable profile from their selected automation. Private login profiles require their active creator; shared login profiles require active same-project access. Non-secret variable profiles retain their creator-or-owner/admin policy. Schedule changes and deletion are restricted to the active schedule creator or an active workspace owner/admin.
Example Workflow — Android
list_projects→ resolve the targetproject_idupload_mobile_app→ register the APK in that project- Record securely in the dashboard, or use
import_mobile_script/create_mobile_automation list_mobile_automations→ resolve the automation in the same projectrun_mobile_automation→ trigger it on a real device, optionally with a login profilelist_mobile_runs→ check status, result summary, private visual links, and BrowserStack session metadata- Failures auto-create bug reports with failure snapshot and step breakdown
Example Workflow — iOS
upload_mobile_app→ register your IPA withproject_idfor real-device runs- Upload simulator
.appbuild on app detail page (for recording) - Record test in browser → actions captured from simulator
run_mobile_automation→ trigger the saved automation on an iPhone (uses the IPA)update_mobile_app→ replace IPA with new version when ready
Example Workflow — Native Maestro
upload_mobile_app→ register the APK or IPA in the target projectcreate_mobile_credential→ optionally create a same-project profile for an authenticated flowcreate_mobile_variable_profile→ optionally create same-project syntheticDATA_*values used by the flowcreate_mobile_automation→ pass one known-working YAML flow with the linked app’s exact package/bundleappId,script_type: maestro, andexecution_mode: browserstack_maestro. Use${USERNAME}/${PASSWORD}for login and${DATA_EMAIL}-style placeholders for synthetic input; pass profile IDs to save defaults.run_mobile_automation→ select a compatible device and optionally override the login or variable profile. Omit the variable profile to inherit, or passnullto disable it for one run.list_mobile_runs→ inspect authorized pass/fail summaries, private video/screenshots, filtered logs, real step names, detailed failures, and session metadata. If safe sanitization cannot be established for a credentialed run, detailed text is withheld while status and available visual evidence remain.
Refine with AI: the allowlisted beta is available through the dashboard and REST refinement endpoints. No Refine MCP tools are part of the public catalog yet.
Compliance & Evidence (Enterprise)
collect_compliance_evidence— Trigger automated evidence collection from connected services (Cloudflare, GitHub, Sentry, Supabase, Railway). Returns run ID. Collects SSL/TLS settings, WAF status, Dependabot alerts, error trends, deploy history, and more.check_config_drift— Check all connected services for security configuration drift from baselines (SSL mode, TLS version, HSTS, WAF rules, security headers).generate_access_review— Create a quarterly access review report. Audits team members, roles, MFA status, API key usage, and generates recommendations (e.g., revoke inactive keys).get_security_events— Query the cross-service security event timeline. Filter by source (cloudflare, sentry, github) and severity (critical, high, medium, low, info). Events are auto-correlated across services.
Compliance Coverage
These tools help with 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), and GDPR (Art. 5, 25, 32, 33) compliance requirements.
Compatible Clients
bugAgent works with any client that supports the Model Context Protocol. Here are setup guides for popular clients:
Claude Desktop
Open Settings → Developer → Edit Config, then add:
{
"mcpServers": {
"bugagent": {
"type": "http",
"url": "https://mcp.bugagent.com/mcp",
"headers": {
"Authorization": "Bearer ba_live_YOUR_KEY_HERE"
}
}
}
} Restart Claude Desktop after saving.
Cursor
Open Settings → MCP Servers → Add Server, or edit .cursor/mcp.json in your project root:
{
"mcpServers": {
"bugagent": {
"type": "http",
"url": "https://mcp.bugagent.com/mcp",
"headers": {
"Authorization": "Bearer ba_live_YOUR_KEY_HERE"
}
}
}
} Windsurf
Open Settings → MCP → Add Server, or edit your MCP config file:
{
"mcpServers": {
"bugagent": {
"type": "http",
"url": "https://mcp.bugagent.com/mcp",
"headers": {
"Authorization": "Bearer ba_live_YOUR_KEY_HERE"
}
}
}
} Claude Code (CLI)
Add bugAgent directly from the terminal:
claude mcp add --transport http bugagent https://mcp.bugagent.com/mcp --header "Authorization: Bearer ba_live_YOUR_KEY_HERE" This connects directly to the hosted Streamable HTTP server.
Optional stdio bridge
For clients that require stdio, use the published bugagent-mcp bridge:
- Command:
npx - Command line:
npx -y bugagent-mcp - Args:
["-y", "bugagent-mcp"] - Env:
BUGAGENT_API_KEY
Get Help
Need assistance? We're here to help.