DOCS
Automate

AI agents (MCP)

Let Claude Code, Cursor, Codex or any MCP client write tests, run them, read the results and share the proof, with the same actions you have in the app.

Connect#

You need an API key that can also create and edit tests (Settings → API keys). Store it as QA_AI_API_KEY.

claude mcp add --transport http qa-ai https://app.testsy.dev/mcp --header "Authorization: Bearer $QA_AI_API_KEY"

The server is at https://app.testsy.dev/mcp: Streamable HTTP with JSON answers, authenticated with the key as a bearer token. It supports MCP protocol versions 2025-06-18, 2025-03-26 and 2024-11-05.

What an agent can do#

Everything you do in the app with tests and runs. A typical flow:

  1. list_projects, then plan_test with what to test: the assistant drafts the steps and checks.
  2. Show you the plan. Revise it with plan_test and change; answer its questions with answers.
  3. create_test with the confirmed plan, and run_test.
  4. Poll get_run every 20 to 30 seconds until final is true, then read each check's result and reason.
  5. After fixing the code, run_test again. create_share_link gives a client the proof.

Tests can also get files (add_test_file), sign-in accounts (add_credential), endpoints into your system (add_endpoint) and schedules (create_schedule).

Tools that only read are marked read-only, so clients such as Codex run them without asking. Tools that save, run or delete are marked so, and your client asks before using them, unless you allow them.
Passwords sent with add_credential pass through your agent. They are encrypted when stored and never reach the tester's AI, but prefer adding passwords in the web app.

Every tool#

Workspace

ToolWhat it does
get_workspaceThe workspace this key belongs to: its id, name and plan, and this period's usage.
no arguments
get_usagePlan, runs used this billing period, included runs, extra-run packs and runs left.
no arguments
get_networkHow our browsers reach your sites: the static addresses to allow-list, the country they browse from, and the countries available.
no arguments
set_browse_from changesChoose the country our browsers visit your sites from (web tests), or automatic: the site's own country.
country

Projects

ToolWhat it does
list_projectsThe projects in this workspace (a project groups the tests of one site or app).
no arguments
get_projectOne project.
projectId
create_project changesCreate a project, for example one per site or app.
name description?
update_project changesRename a project or change its description.
projectId name? description?
delete_project changesArchive a project: its tests stop running; past runs stay in the run history.
projectId

Tests

ToolWhat it does
list_testsThe tests of a project, each with its latest run.
projectId
get_testOne test: its start address, requirement, plan, options and latest run.
testId
create_test changesCreate a test of a website (url) or of an app (platform android or ios, and appId).
projectId title url? requirement? plan? platform? appId? buildId? device? credentials? options?
update_test changesChange a test: its title, start address, requirement, plan or options.
testId title? url? requirement? plan? options?
delete_test changesArchive a test: it stops running; past runs stay in the run history.
testId

Test plans

ToolWhat it does
plan_test changesHave the assistant draft a test from a plain-language description, or revise a plan, without saving anything.
description url? projectId? platform? appId? plan? change? answers?

Test files

ToolWhat it does
list_test_filesFiles a test can upload during its steps (for example an import file).
testId
add_test_file changesAdd a file the tester can upload during the test: up to 25 MB, up to 10 files per test.
testId name contentBase64? contentType?
delete_test_file changesRemove one of a test's files.
testId name

Sign-in accounts

ToolWhat it does
list_credentialsThe sign-in accounts stored for a project: names, usernames and sites. Passwords are never returned.
projectId
add_credential changesStore a sign-in account the tester can use. The password is encrypted, never returned, and never sent to the tester's AI: the tester types it.
projectId name username password site?
delete_credential changesDelete a sign-in account. Tests that sign in with it stop running until it is added again or they are edited.
credentialId

Endpoints

ToolWhat it does
list_endpointsCalls into your own systems the tester may make during a run (for example "create a voucher"). Headers are never returned.
projectId
add_endpoint changesAdd a call the tester may make into your system. It sees only the name, the description and what the call returned. Using endpoints in a run needs a paid plan.
projectId name description method? url headers? bodyTemplate?
delete_endpoint changesDelete an endpoint.
endpointId

Runs

ToolWhat it does
run_test runsStart a run of one test. Runs take minutes: poll get_run until final is true.
testId mode? buildId?
run_project runsStart a run of every test in a project (a suite).
projectId mode? buildIds? buildId?
list_runsRecent runs, newest first, optionally for one test or project or with one status; or the runs with the given ids.
ids? testId? projectId? status? limit?
get_runA run: its status, and once final the verdict, the headline, each check's result with the reason, the values read, and links to the video, screenshots and the result page.
runId
stop_run runsStop a queued or running run. A run you stop is not counted.
runId

Share links

ToolWhat it does
list_share_linksThe share links made for a run, with when they expire and how often they were opened.
runId
create_share_link runsA read-only link to a run's result, replay and video that anyone can open without signing in, until it expires.
runId days?
delete_share_link runsTurn off a share link straight away.
shareId

Schedules

ToolWhat it does
list_schedulesWhen tests run by themselves: every schedule in the workspace, or those of one test or project.
testId? projectId?
create_schedule changesRun a test by itself: on chosen weekdays, or monthly on a day, at a time in a time zone. Each scheduled run counts like any other run.
testId days? dayOfMonth? time timezone?
update_schedule changesPause or resume a schedule.
scheduleId enabled
delete_schedule changesDelete a schedule.
scheduleId

App builds

ToolWhat it does
list_buildsThe app builds uploaded to a project (Android .apk, iOS Simulator .app zipped), newest first, with the largest size and part size for uploads.
projectId
get_buildOne build: its app id, version, status and any warnings.
buildId
delete_build changesDelete a build. Runs that used it keep their results; a build a test pins cannot be deleted.
buildId

Each tool is also a REST endpoint with the same parameters: see the API reference.