For QA from your coding agent, we recommend this process: let the agent use repository context to define the right check, let AlwaysQA perform the durable Browser or HTTP check, and keep confirmation and protected actions with the User. You stay in the development workflow without asking the same agent to write the change, grade itself, and approve the result.
Most teams make the mistake of blurring those responsibilities. That sounds convenient until a single system silently defines success, performs the check, explains the failure, and decides what happens next. AlwaysQA uses a stricter split: your coding agent operates the QA workflow through MCP, AlwaysQA executes and records the Run, and you approve actions that consume allowance, repeat on a Schedule, expose protected data, or affect the account.
The result is a practical loop:
Code change → relevant Test Case → confirmed Run → Outcome and Evidence → fix → rerun.
Reality check: The value isn’t that an agent can click “Run.” The value is that the check survives the conversation, returns evidence from outside the codebase, and leads back to a verified customer outcome.
The use case at a glance
| Responsibility | Owner |
|---|---|
| Understand routes, components, tests, and recent code changes | Coding Agent |
| Propose or locate the relevant Browser or API Test Case | Coding Agent, reviewed by the User |
| Execute the saved Test Case and preserve the Run | AlwaysQA |
| Confirm Runs, Schedules, and meaningful mutations | User |
| Enter secrets and complete protected account actions | User in the AlwaysQA browser interface |
| Connect failure Evidence to the implementation | Coding Agent and developer |
| Approve the fix and decide whether to ship | User and engineering team |
This isn’t a second “agent version” of your QA system. MCP and the AlwaysQA browser interface operate the same Projects, Test Cases, Schedules, Runs, Outcomes, and Evidence.
A practical example: verify an authentication callback change
Suppose you ask a coding agent to change an authentication callback. The repository already contains the callback route, session logic, UI state, and automated tests. The agent can see which customer-facing behavior might be affected.
The code compiles. Unit tests pass. The complete workflow can still break if the browser returns to the wrong route, loses the session, or never reaches the dashboard.
Without an MCP-connected QA workflow, the developer must leave the coding context and reconstruct the operational questions:
- Is there already a Test Case for this customer flow?
- Which QA Account should it use?
- What observable state counts as success?
- Did the full workflow pass after deployment?
- If it failed, where did browser behavior diverge?
With AlwaysQA connected, the coding agent can find an existing Test Case such as:
A dedicated QA Account can complete passwordless sign-in and reach the dashboard.
If no suitable Test Case exists, the agent can propose one from the repository context. You review the name, starting URL, Instructions, Success Condition, kind, and optional inputs before it becomes saved coverage.
Then you ask:
Run the authentication Test Case and bring back the Outcome and Evidence.
After explicit confirmation, AlwaysQA queues the Run and returns its identifier and State. The coding agent can retrieve the finished record later. If the Outcome is Failed, it can inspect the structured Evidence alongside the callback and session code already open in the repository.
That is the handoff you want: observed customer behavior on one side, relevant implementation context on the other.
MCP is the operating layer, not the test runner
Model Context Protocol (MCP) gives compatible clients a standard way to connect with external tools. Current Codex clients support remote Streamable HTTP MCP servers and OAuth authentication (OpenAI MCP documentation); Claude Code likewise documents connecting external MCP servers (Anthropic MCP documentation).
AlwaysQA exposes a hosted HTTPS MCP server. You add it to an OAuth-capable client, approve the connection in the browser, and then work with AlwaysQA through task-oriented tools. You don’t install a separate AlwaysQA server in every repository or paste a personal access token into the agent configuration.
The distinction matters:
| Layer | What it does |
|---|---|
| Coding Agent | Reads local project context and calls approved AlwaysQA tools |
| AlwaysQA MCP | Applies product policies, validation, ownership checks, confirmations, and allowances |
| Browser Run | Uses an agent-guided browser session to evaluate a Browser Test Case |
| API Run | Executes a saved HTTP request and Response Expectations deterministically |
| AlwaysQA record | Preserves Run State, Outcome, Evidence, Issue Report, and history |
The coding agent doesn’t become the managed browser runner. MCP gives it a controlled way to operate AlwaysQA.
See how AlwaysQA works for the complete Test Case, Run, Outcome, and Evidence lifecycle.
Use task-oriented tools instead of generic database access
AlwaysQA’s MCP interface follows the product’s domain language. It doesn’t expose a generic record editor and expect the agent to infer lifecycle rules.
The tools cover tasks such as:
| Area | What the Coding Agent can do |
|---|---|
| Projects | List Projects or create one |
| Test Cases | List, inspect, create, update, archive, restore, filter, or tag |
| Schedules | Set, change, or disable a Test Case Schedule after confirmation |
| Runs | Start a confirmed Run, list Runs, and retrieve one by identifier |
| Evidence | Read the Outcome, summary, observations, action timeline, attention guidance, and Failed Run Issue Report |
| Private inputs | Request a QA Account browser handoff or a ticketed Test File upload |
| Plan and account | Review usage or receive a browser handoff when direct User action is required |
Structured responses include stable identifiers and predictable error information. When a request can’t proceed, the agent receives a reason, whether retry is appropriate, a suggested next action, and a handoff URL when the User must finish something in the browser.
This reduces a common automation failure: parsing prose and guessing whether an operation succeeded.
Choose Browser or API QA from the same workflow
AlwaysQA supports two immutable Test Case kinds. The same Project, Schedule, Run, allowance, Outcome, archive, and history concepts apply, but the execution contracts are different.
| Use a Browser Test Case when… | Use an API Test Case when… |
|---|---|
| Success depends on navigation, forms, redirects, downloads, or visible UI state | Success can be stated as HTTP response expectations |
| A test-user identity must sign in through the application | Authorization uses an API Credential bound to the endpoint origin |
| The customer experience itself is the thing being verified | You need deterministic checks for status, headers, JSON values, text, or response time |
| Visual Evidence or temporary replay may help explain a failure | Structured request and response Evidence is the useful diagnostic record |
Kind is chosen when the Test Case is created and doesn’t change later. Converting a browser workflow into an HTTP request would change its meaning and history, so you create a separate Test Case instead.
This gives the coding agent a useful choice. A changed callback may need a Browser Test Case for the complete sign-in experience and a separate endpoint check for a deterministic response contract. They answer different questions; one shouldn’t be presented as a substitute for the other.
Confirm actions that spend allowance or create ongoing authority
Starting a Run can perform real actions in the target application and consumes Run Allowance. Enabling a Schedule authorizes those actions to repeat. AlwaysQA therefore requires explicit User confirmation at these boundaries.
A sensible coding-agent exchange looks like this:
- You ask to verify the changed customer flow.
- The agent finds the Test Case and summarizes its kind, target, Success Condition, and relevant inputs.
- You confirm the Run.
- AlwaysQA queues it and returns the durable Run identifier.
The same principle applies to a Schedule. The agent can prepare a Daily or Weekly cadence and chosen local time, but enabling it requires your approval. For a deeper scheduling workflow, see recurring regression testing.
Confirmation isn’t ceremonial friction. It makes the authorization visible before a browser submits a form, an HTTP Run sends a request, or a Schedule repeats those actions unattended.
Deep dive: durable Runs survive the coding conversation
Browser workflows don’t fit neatly inside one synchronous tool call. Authentication, navigation, loading states, and the final Success Condition take time. A terminal can close or a conversation can be interrupted while execution is still in progress.
AlwaysQA separates the short MCP request from the durable Run:
-
run-test-casevalidates confirmation, Plan access, allowance, Test Case readiness, and whether another Run is already active. -
It queues the Run and immediately returns the Run identifier plus current State.
-
Execution continues inside AlwaysQA.
-
get-runbecomes the polling and retrieval boundary. -
When the Run is Finished, that same record contains its Outcome and Evidence.
The Run doesn’t disappear when the original MCP request ends. The coding agent can retrieve it in a later turn or after reconnecting.
Mutation retries also need care. For operations that aren’t naturally idempotent, the client supplies an operation identifier. AlwaysQA retains the authenticated result for 24 hours: repeating the same operation and arguments returns the earlier result, while reusing the identifier with different arguments is rejected. That prevents a network retry from quietly creating a duplicate Project, Test Case, or Run.
This is unglamorous infrastructure, but it is the difference between a demo and an operable QA workflow. Agent execution has latency, tools retry, and sessions end. Durable state must live outside the chat.
Bring Outcome and Evidence back to the code
Every Finished Run has one Outcome:
- Passed: the Success Condition was met.
- Failed: Evidence confirms that the expected behavior didn’t occur.
- Needs Attention: AlwaysQA couldn’t responsibly confirm pass or failure and provides a reason plus a recommended next action.
For a Browser Run, the coding agent can retrieve the summary, meaningful observations, compact action timeline, and Failed Run Issue Report. When direct visual review will help, it receives an authenticated handoff to the temporary browser replay rather than the recording itself.
For an endpoint Run, Evidence is tied to the saved request and Response Expectations. An exact mismatch can produce Failed; a response that can’t be evaluated safely can produce Needs Attention.
The agent now has both sides of the problem:
- local repository context around the changed implementation; and
- external Run Evidence showing what the application or endpoint actually did.
It can narrow the next debugging step, inspect relevant files, and propose a change. It shouldn’t invent a root cause that the Evidence doesn’t support.
After the fix is approved and deployed, confirm the same Test Case again. Deployment QA History keeps the change, check version, Evidence, and rerun sequence connected instead of losing the result in a terminal transcript.
Keep repository files and secrets out of the tool payload
The coding agent may read repository files locally to understand the feature. AlwaysQA’s Test Case tools don’t require the repository itself. They receive the small set of Test Case fields you confirm, not an automatic upload of the whole codebase.
Be precise about the boundary: the coding agent controls what it sends through a tool call. Review proposed Instructions, URLs, request bodies, and Success Conditions before confirming them. Don’t place source code, .env contents, access tokens, or unrelated customer data into a Test Case definition.
Secrets use separate paths:
| Protected input | How AlwaysQA handles it |
|---|---|
| QA Account | Credentials are configured in a protected browser handoff and aren’t returned to the Coding Agent. |
| API Credential | Bearer tokens, keys, and HTTP Basic secrets are encrypted and write-only; the agent receives metadata, not secret material. |
| Test File | A short-lived, single-use upload ticket transfers the selected file outside the prompt and scopes it to one Test Case. |
| Replay | Visual Evidence opens through an authenticated browser handoff rather than being streamed into the MCP response. |
For authentication-specific workflows, the authenticated workflow testing guide explains the QA Account and Login Origin boundaries in more detail.
Know what you authorize before connecting
A Coding Agent Connection acts with your AlwaysQA product authority across your Projects. The initial connection design doesn’t provide separate per-Project permission scopes or a reduced “agent” role.
The connection still follows ownership checks, Setup Access, Plan rules, allowances, confirmations, and mutation auditing. AlwaysQA records privacy-aware information about MCP changes, such as the tool, connection, affected record identifiers, result, and time. It doesn’t copy raw arguments, credentials, Test File bytes, or Run Evidence into that audit trail.
You can authorize multiple Coding Agent Connections and revoke them individually. Treat revocation as its own security control: logging out of a browser session isn’t the same action as disconnecting a longer-lived coding-agent authorization.
Protected ceremonies remain browser-only, including:
- approving the OAuth connection;
- entering or rotating protected credential secrets;
- approving a detected Login Origin;
- viewing passwordless setup information;
- completing Checkout or billing management;
- changing sensitive account-protection settings;
- deleting the User; and
- opening temporary browser replay.
This is intentional friction. Convenience doesn’t justify letting the agent approve its own authority, reveal credentials to itself, or complete an irreversible account action without the User.
Use the coding agent and browser for different jobs
| Use the Coding Agent when… | Use the AlwaysQA browser when… |
|---|---|
| Repository context helps identify an affected customer flow | You must enter or rotate a secret |
| You want to create or update a Test Case conversationally | A protected OAuth, account, or billing action needs direct approval |
| A code change should trigger a specific confirmed Run | You need to watch temporary browser replay |
| Structured Evidence must be compared with relevant code | Visual exploration of Run history is faster |
| A fix needs a fresh verification Run | You want to manage connections or revoke access |
Both interfaces work with the same AlwaysQA records. Move between them without recreating the Project, Test Case, Schedule, or Run.
Start with one change and one customer outcome
Do not begin by asking the coding agent to generate a complete regression catalogue. That produces maintenance before it produces confidence.
Start smaller:
-
Connect one OAuth-capable coding agent to AlwaysQA.
-
Choose a feature being changed now.
-
Ask which customer outcome the change could break.
-
Review an existing Test Case or approve one new check of the appropriate kind.
-
Confirm a Run and inspect the Outcome with its Evidence.
-
If it failed, fix the implementation and run the same check again.
-
Add a Schedule only when the Test Case has a clear owner and remains worth repeating.
That proves the operating loop before you spend allowance and maintenance effort on broader coverage.
What changes for the development team
| Without MCP-connected QA | With AlwaysQA |
|---|---|
| The developer explains the changed workflow again in another tool. | The coding agent uses the repository context it already has. |
| Browser or API verification is detached from the code change. | The relevant Test Case is operated from the development conversation. |
| A long-running check is tied to one open request. | The Run continues as a durable AlwaysQA record. |
| Failure context is copied manually into chat. | Structured Evidence and the Issue Report return through MCP. |
| Credentials are pasted into an agent conversation. | Secret entry stays in a protected browser handoff. |
| The agent silently expands coverage or starts checks. | The User confirms mutations, Runs, and Schedules at visible boundaries. |
The commercial value is straightforward: less context switching, more repeatable verification, and a shorter route from changed code to observed behavior. The trade-off is equally clear: Test Cases still need owners, allowances still matter, and an account-level MCP connection must be treated as real product access.
Keep QA next to the change without letting the agent grade itself
Connect your coding agent, choose one changed customer flow, and confirm one Test Case. AlwaysQA will execute the saved check, preserve the Outcome and Evidence, and give the coding agent a reliable record to bring back to the fix.
Connect your coding agent to AlwaysQA and verify the next important change from the workflow where you built it.
Frequently asked questions
What does MCP do in AlwaysQA?
MCP gives a compatible Coding Agent a task-oriented interface to AlwaysQA. The agent can help manage Projects, Test Cases, Schedules, Runs, and Evidence. AlwaysQA performs the execution and preserves the durable Run record.
Which coding agents can connect?
AlwaysQA supports OAuth-capable MCP clients, including Codex, Claude Code, and other compatible clients. Each Coding Agent Connection is approved through a browser authorization flow and can be revoked independently.
Does AlwaysQA receive my repository?
AlwaysQA’s MCP Test Case workflow doesn’t require an automatic repository upload. The Coding Agent analyzes files in its own environment and sends the Test Case fields you approve. You should still review tool inputs and avoid placing source code, secrets, or unrelated data in Test Case definitions.
Can a Coding Agent start a Run or enable a Schedule?
Yes, after explicit confirmation. AlwaysQA checks product access, allowances, Test Case readiness, and other lifecycle rules before queuing the Run or enabling the Schedule.
What happens if the Coding Agent disconnects during a Run?
The Run continues inside AlwaysQA. The client can retrieve it later by identifier and receive the Finished Outcome and Evidence.
Can the Coding Agent access QA Account or API Credential secrets?
No. Secret values are configured directly through protected AlwaysQA browser surfaces and aren’t returned through MCP. Test File content also uses a ticketed upload path rather than being embedded in the agent prompt.
Does the MCP connection have per-Project permissions?
Not in the initial connection design. A connected Coding Agent acts with the User’s AlwaysQA product authority across Projects, subject to ownership rules, confirmations, allowances, and the audit trail.