Skip to main content
Glama

Server Details

Run plain-English web QA tests and inspect check results and evidence.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over the last 24 hours
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
testsy-ai/testsy-integrations
GitHub Stars
0
ChatGPT
–
Claude
–

TDQS

B3.2/5.0

Scored across 48 tools

Disambiguation4/5

Most tools map cleanly to distinct resource/action pairs, and the build, run, test, and link operations are clearly separated. Minor overlap between get_workspace and get_usage, plus the multi-step build-upload tools, could cause hesitation, but descriptions mostly disambiguate.

Naming Consistency5/5

All tools use snake_case with a verb-first pattern such as list_, get_, create_, update_, delete_, run_, and wait_. The mix of add_ for sub-resources and create_ for top-level objects is used consistently rather than chaotically.

Tool Count2/5

48 tools is very heavy for an MCP surface, even for a broad test-automation platform. The many fine-grained CRUD groups create substantial selection and maintenance overhead.

Completeness4/5

Coverage is broad across tests, runs, projects, builds, schedules, credentials, endpoints, files, share/watch links, devices, and workspace. Small gaps remain, such as no update operation for credentials or endpoints and no get_schedule or watch-link listing.

Available Tools

48 tools
add_credentialAdd a sign-in accountAInspect

Store 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. Tests refer to the account by name ("Sign in as the account "customer""). Through MCP the password passes through your AI agent: prefer adding passwords in the web app or over the REST API from a secret store.

Inputs: name (required), password (required), username (required), projectId (required), +1 more.

add_endpointAdd an endpointAInspect

Add 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. bodyTemplate may contain {{param}} placeholders the tester fills in. Headers (for example Authorization) are encrypted and never returned.

Inputs: url (required), name (required), projectId (required), description (required), +3 more.

add_test_fileAdd a test fileAInspect

Add a file the tester can upload during the test: up to 25 MB, up to 10 files per test. REST: send the raw bytes as the body with the file name in the X-File-Name header (or ?name=), or JSON {name, contentBase64}. MCP: name and contentBase64. A file with the same name replaces the old one.

Inputs: name (required), testId (required), contentType, contentBase64.

complete_build_uploadComplete a build uploadAInspect

Finish the upload with every part's etag. The build is checked (app id, version, whether our devices can run it) and returned. Use the returned build.id in run_test {buildId} or run_project {buildIds} to run the new build. Uploading alone does not start a run. The command from create_build_upload completes the upload itself; call this only after uploading parts to the signed links yourself. Also accepts the signed completeUrl instead of an API key.

Inputs: parts (required), buildId (required).

create_build_uploadCreate signed upload linksAInspect

Start a build upload and get signed links that upload the file without an API key: run the returned command in a shell, or PUT each part and POST complete to the links. The build is then checked and ready to run. For AI agents: tool arguments cannot carry a build, so hand the bytes to a shell command. command downloads the command-line tool and uploads the file (parts, then complete). Without it: PUT the raw bytes of part n (partBytes each, the last one shorter) to partUrlTemplate with {partNumber} replaced, then POST {parts: [{partNumber, etag}]} to completeUrl. The links expire at expiresAt and work only for this upload. Call find_build first to skip uploading a file that is already there.

Inputs: size (required), fileName (required), projectId (required), label, +1 more.

create_projectCreate a projectCInspect

Create a project, for example one per site or app.

Inputs: name (required), description.

create_scheduleCreate a scheduleBInspect

Run 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.

Inputs: time (required), testId (required), days, timezone, +1 more.

create_testCreate a testAInspect

Create a test of a website (url) or of an app (platform android or ios, and appId; device phone or tablet and osVersion, default a phone on the latest OS). Pass plan (from plan_test, after the requester confirmed it): it is stored as the approved checklist and the tester follows it as written. Or pass requirement, plain-language text the tester plans itself at run time. Never put passwords in the text: name a sign-in account in credentials.

Inputs: title (required), projectId (required), url, plan, +9 more.

delete_buildDelete a buildA
Destructive
Inspect

Delete a build. Runs that used it keep their results; a build a test pins cannot be deleted.

Inputs: buildId (required).

delete_credentialDelete a sign-in accountA
Destructive
Inspect

Delete a sign-in account. Tests that sign in with it stop running until it is added again or they are edited.

Inputs: credentialId (required).

delete_endpointDelete an endpointC
Destructive
Inspect

Delete an endpoint.

Inputs: endpointId (required).

delete_projectArchive a projectA
Destructive
Inspect

Archive a project: its tests stop running; past runs stay in the run history.

Inputs: projectId (required).

delete_scheduleDelete a scheduleC
Destructive
Inspect

Delete a schedule.

Inputs: scheduleId (required).

delete_testArchive a testA
Destructive
Inspect

Archive a test: it stops running; past runs stay in the run history.

Inputs: testId (required).

delete_test_fileDelete a test fileB
Destructive
Inspect

Remove one of a test's files.

Inputs: name (required), testId (required).

duplicate_testDuplicate a testAInspect

Copy a test under a new title: the test's info is copied over (start address, requirement, plan, options and files). Its run history and schedules stay with the original. The copy counts toward the plan's test limit. Without title it is named " (copy)". Pass projectId to put the copy in another project of the workspace.

Inputs: testId (required), title, projectId.

find_buildFind a buildA
Read-only
Inspect

Is this build already uploaded? Looks up the project's newest ready build by the file's sha256, else by a native fingerprint; build is null when neither matches. A sha256 match means the exact file is uploaded: run it with run_test {buildId} / run_project {buildIds} instead of uploading again. A fingerprint match (a hash of the native inputs the uploader stored with the build, for example @expo/fingerprint) means the native build is unchanged, so CI can skip building it. The command-line tool does this for files: testsy-ai build find / build ensure.

Inputs: projectId (required), sha256, fingerprint.

get_buildGet a buildB
Read-only
Inspect

One build: its app id, version, status and any warnings.

Inputs: buildId (required).

get_networkGet network settingsB
Read-only
Inspect

How our browsers reach your sites: the static addresses to allow-list, the country they browse from, and the countries available.

Inputs: no named parameters.

get_projectGet a projectC
Read-only
Inspect

One project.

Inputs: projectId (required).

get_runGet a runC
Read-only
Inspect

A 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.

Inputs: runId (required).

get_testGet a testB
Read-only
Inspect

One test: its start address, requirement, plan, options and latest run.

Inputs: testId (required).

get_usageGet usageB
Read-only
Inspect

Plan, runs used this billing period, included runs, extra-run packs and runs left.

Inputs: no named parameters.

get_workspaceGet the workspaceA
Read-only
Inspect

The workspace this key belongs to: its id, name and plan, and this period's usage.

Inputs: no named parameters.

import_buildImport a build from a linkAInspect

Fetch a build from an https link (an EAS, Bitrise, S3 or GitHub artifact link, up to the build size limit) into the project; it is checked and ready to run. Nothing to upload from your side. The link must be https to a public host name; up to 3 redirects are followed. headers (optional, at most 5: Authorization or X-… names) are sent to the first host only, for a private artifact store. The file name comes from Content-Disposition or the link; it must be an .apk or a zipped .app. Run the result with run_test {buildId} or run_project {buildIds}. Call find_build first when the file may already be there.

Inputs: url (required), projectId (required), label, headers, +1 more.

list_buildsList buildsA
Read-only
Inspect

The app builds uploaded to a project (Android .apk, iOS Simulator .app zipped), newest first, with the largest size and part size for uploads.

Inputs: projectId (required).

list_credentialsList sign-in accountsA
Read-only
Inspect

The sign-in accounts stored for a project: names, usernames and sites. Passwords are never returned.

Inputs: projectId (required).

list_devicesList devicesA
Read-only
Inspect

The phones and tablets app tests can run on, and their OS versions (latest first). Pass device and osVersion to create_test, update_test, run_test or run_project. A new app test runs on a phone with the latest OS unless you choose otherwise; the version is saved with the test, so it keeps its OS until you change it.

Inputs: no named parameters.

list_endpointsList endpointsC
Read-only
Inspect

Calls into your own systems the tester may make during a run (for example "create a voucher"). Headers are never returned.

Inputs: projectId (required).

list_projectsList projectsB
Read-only
Inspect

The projects in this workspace (a project groups the tests of one site or app).

Inputs: no named parameters.

list_runsList runsA
Read-only
Inspect

Recent runs, newest first, optionally for one test or project or with one status; or the runs with the given ids.

Inputs: ids, limit, status, testId, +1 more.

list_schedulesList schedulesA
Read-only
Inspect

When tests run by themselves: every schedule in the workspace, or those of one test or project.

Inputs: testId, projectId.

list_test_filesList a test's filesC
Read-only
Inspect

Files a test can upload during its steps (for example an import file).

Inputs: testId (required).

list_testsList testsC
Read-only
Inspect

The tests of a project, each with its latest run.

Inputs: projectId (required).

plan_testDraft or revise a planA
Read-only
Inspect

Have the assistant draft a test from a plain-language description, or revise a plan, without saving anything. Returns the proposed steps, checks, values to record, assumptions and any questions only the requester can answer. Show the plan to the requester; to change it, call again with plan and change; to answer questions, pass answers. Once they confirm, pass the plan to create_test. When no question is open the plan has passed the planning review (review.ok). Pass projectId so the assistant knows the project's sign-in accounts and endpoints. Each call uses one assistant draft of the workspace's daily allowance.

Inputs: description (required), url, plan, appId, +4 more.

run_projectRun a projectAInspect

Start a run of every test in a project (a suite). Each started run has a watchUrl to watch it live without signing in. buildIds: builds to use; each app test runs the one of its own app. Tests that could not start are listed in skipped with the reason. REST: send an Idempotency-Key header to make a retry safe.

Inputs: projectId (required), url, mode, device, +4 more.

run_testRun a testAInspect

Start a run of one test. Runs take minutes: poll get_run until final is true. watchUrl opens the run live without signing in. App tests run the newest build of their app unless buildId names another (see list_builds). watchUrl is a view-only link anyone can open (no sign-in) to watch the run live and read its result for a while after it ends; give it to the person waiting for the result. Absent when the workspace turned watch links off. REST: send an Idempotency-Key header so a retried request does not start a second run.

Inputs: testId (required), url, mode, device, +3 more.

set_browse_fromSet the browsing countryAInspect

Choose the country our browsers and devices reach your sites and app servers from (web and app tests), or automatic: the site's own country (an app test then uses our default country).

Inputs: country (required).

stop_runStop a runA
DestructiveIdempotent
Inspect

Stop a queued or running run. A run you stop is not counted.

Inputs: runId (required).

update_projectUpdate a projectA
Idempotent
Inspect

Rename a project or change its description.

Inputs: projectId (required), name, description.

update_schedulePause or resume a scheduleC
Idempotent
Inspect

Pause or resume a schedule.

Inputs: enabled (required), scheduleId (required).

update_testUpdate a testA
Idempotent
Inspect

Change a test: its title, start address, requirement, plan or options. Only the fields you pass change; within options, only the options you pass change and the others keep their values.

Inputs: testId (required), url, plan, title, +5 more.

wait_runWait for a runA
Read-only
Inspect

Wait up to seconds (default 25, at most 55) for a run to finish, then return it: one call instead of polling get_run every few seconds. Call it again while final is false. The answer comes back the moment the run is final (verdict, checks and evidence in), or when the time is up with final false — then call wait_run again. Runs take 2 to 20 minutes, so expect several calls for a long run; each costs nothing while it waits.

Inputs: runId (required), seconds.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables agents to turn written acceptance requirements into explicit browser-check plans, inspect web apps for supported locators and assertions, and run deterministic checks that capture evidence reports. Each requirement is linked to observed pass/fail/unverified evidence, with write actions and target origins restricted unless explicitly allowed.
      MIT
    • A
      license
      B
      quality
      B
      maintenance
      Enables a connected model to inspect a live Chromium page, click and fill controls, and verify outcomes so single scenarios or full workflows can be checked for functional, visual and defensive QA issues. Findings — including screenshot evidence, severities and reproduction steps — are exported as JSON and Markdown bug reports for developers.
      18
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables UI auditing via browser automation, capturing per-element evidence and generating Markdown, JSON, and DOCX reports.
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Lets an agent open a running web app in a real browser, perform literal interaction steps, capture screenshots, measure UI rules, diff frames, and store evidence, while leaving all judgment to the calling agent.
      15
      9 npm
      2
      MIT
    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.