Replay QA

Replay QA API and MCP tools

Endpoints, authentication, MCP tool list, and the REST resources behind the Replay QA web app.


Replay QA exposes the same projects, bugs, journeys, test runs, and explorations through a REST API and an MCP server. This page lists what is there. For the workflow and client setup, see Driving Replay QA from a coding agent.

Endpoints

InterfaceURL
REST base URLhttps://qa.replay.io/api/v1
OpenAPI spechttps://qa.replay.io/api/v1/openapi.json (no authentication required)
MCP serverhttps://qa.replay.io/api/mcp (streamable HTTP)
OAuth resource metadatahttps://qa.replay.io/.well-known/oauth-protected-resource

The OpenAPI spec is the complete endpoint reference, with request and response shapes. Any OpenAPI-aware client or agent can load it directly.

Authentication

Both interfaces accept a Replay QA API token as a bearer token:

Authorization: Bearer lqa_your_token_here

Tokens start with lqa_ and are created in Replay QA under Settings > API. The MCP server also supports OAuth sign-in, so MCP clients can connect by URL alone and authenticate in the browser on first use.

Which credential?

This token is not the app.replay.io API key used by the replayio CLI and Replay MCP. See API keys and tokens for the difference.

MCP tools

AreaTools
Projectslist_projects, get_project, get_project_status, create_project, update_project_settings, set_project_flags, set_project_status, update_project_login_credentials
Bugslist_bugs, get_bug, set_bug_status
Test runslist_test_runs, get_test_run, get_test_run_logs, cancel_test_runs, edit_journey_queue, clear_project_queue
Journeyslist_journeys, get_journey
Explorationslist_explorations, get_exploration, get_exploration_logs
Accountget_credit_usage, get_credit_usage_day, manage_project_members, configure_completion_email

Tool descriptions and parameters come from the server. Ask your agent to list the tools, or call tools/list, for the current set.

REST resources

The requests behind the continuous QA loop:

StepRequest
Create a projectPOST /projects with target_url, instructions, optional design_document, budget, use_reverse_proxy
Poll statusGET /projects/{project_id}/status
List open bugsGET /projects/{project_id}/bugs?status=open
Read a bugGET /bugs/{bug_id}
Change a bug's statusPATCH /bugs/{bug_id} with {"status": "fixed"}

Other resources cover journeys (including a per-journey target_url), explorations, test runs, credit usage, project members, GitHub pull request runs, and app versions.

GitHub settings

A project's GitHub connection is a github object on the project. Send null to disconnect. Fields: repoUrl (required), mainBranch (default main), mainBranchTesting (none, detect, events), mainBranchDeploymentUrl (polled when mainBranchTesting is detect), prTesting (none, events), fileIssues (file confirmed bugs as GitHub issues through the App installation), and requireApproval (the pull request check succeeds only on a clean run). See Continuous QA from GitHub for what the modes do.

Bug statuses and severities

Statuses you can set: open, fixed, wontfix, invalid. Setting fixed reruns the affected journey so Replay QA can confirm the fix; a bug that reappears is reopened and shows as open again. Replay QA also sets a few statuses itself, such as pr-closed for bugs found on a pull request that has since closed.

Severities: critical, high, medium, low. See Bug reports for what each level means and what a report contains.

Budget

budget caps how many credits a project may spend. The default of 20 is a thorough pass; around 10 is a smoke test and 50 or more gives broad coverage.

Reverse proxy fields

Creating a project with use_reverse_proxy: true starts it gated: no tests run until a tunnel connects. The create response includes a reverse_proxy_setup_url you can poll for tunnel status. Connect the tunnel from a machine that can reach the app:

Terminal
npx --yes replayqa proxy --project <project_id>

Testing a localhost app covers the proxy in detail.