Skip to content

Connect your coding agent

If you already work with an AI coding assistant, it knows things Marriska can’t see on its own: your routes, field names, data-testids, and exactly what the current pull request changed. Connect it to Marriska and it turns that knowledge into real tests — authored from code, executed in our cloud, and readable by everyone on the team.

Your agent could write Playwright code directly. The difference is where the test lives afterwards:

  • The whole team owns it. A plain-English test is readable by QA, product, and support — not just whoever wrote it.
  • It runs without infrastructure. Cloud browsers, screenshots, visual regression, schedules, notifications, shareable reports.
  • It self-heals. Marriska resolves elements by visible text through a locator ladder, so a class rename doesn’t break the suite.
  • Your code stays yours. The agent reads your repo locally and sends only the finished plain-English steps.
  • A Marriska API key — Settings → API Keys (every plan includes one; paid plans add more).
  • Node.js 18+ and an MCP-capable assistant (Claude Code, Claude Desktop, Cursor, Codex CLI, or any other MCP client).
  1. Create an API key

    In Marriska, open Settings → API Keys → Create API Key. Copy it — it’s shown once. Treat it like a password: it can create tests and start cloud runs in your organization.

  2. Add the server to your agent

    Claude Code:

    Terminal window
    claude mcp add marriska --env MARRISKA_API_KEY=ak_live_... -- npx -y @marriska/mcp

    Any other MCP client (mcp.json, claude_desktop_config.json, Cursor’s MCP settings):

    {
    "mcpServers": {
    "marriska": {
    "command": "npx",
    "args": ["-y", "@marriska/mcp"],
    "env": { "MARRISKA_API_KEY": "ak_live_..." }
    }
    }
    }
  3. Ask for a test

    “Read the checkout flow in this repo, write a Marriska test for the happy path, run it, and show me the result.”

    The agent authors the steps, creates the test in your workspace, queues a cloud run, and reports back with the outcome. The test is now in your Tests list like any other — editable, runnable, schedulable.

ToolWhat it does
whoamiThe org, key and URL this server writes to
list_projectsProjects in your organization
create_projectCreate a project — the same plan limit as in the app
update_projectRename a project or change its description
list_environmentsWhere a project’s tests can be aimed
create_environmentAdd staging, production… with a base URL
update_environmentRename, re-point, change its allowlists, or make default
delete_environmentDelete one; refused while a schedule uses it
project_variablesWhich variable names this project’s tests need, and which environments supply them
list_variablesAn environment’s variables; a secret’s value is never returned
set_variableSet a value on an environment; mark it secret to encrypt and mask it
delete_variableRemove one; a run still referencing it is refused
set_descriptorDocument a name and give it a default — never a secret
list_foldersFolders with their paths, optionally for one project
create_folderCreate a folder or a subfolder in a project
list_testsTests with their folder path and step counts
list_test_setsTest sets with their test counts, for run_test
create_test_setGroup tests under a re-runnable name
update_test_setRename a set, or replace its membership
delete_test_setDelete a set; its tests survive
get_testOne test with its full ordered steps
create_testCreate a test from explicit steps in a project (required — every test belongs to one), in a folder and at a viewport preset if you name them
update_test_stepsReplace a test’s steps after a code change
rename_testChange a test’s name or description
delete_testDelete a test, its steps and its baselines
rename_folderChange a folder’s name
delete_folderDelete a folder; its tests return to the project root
run_testQueue a cloud run, optionally at one viewport preset, optionally with a session for that run
get_run_resultStatus, per-test results, and every step with its error and screenshot path
list_runsRuns newest first, by project, label or status
wait_for_runBlock until a run reaches a terminal status
get_step_screenshotThe image taken after one step, to see why it failed — and, when the step acted on or checked an element, where that element is in the image

The server also publishes the full step schema as an MCP resource (marriska://step-actions), so the agent learns the format — actions, assertions, wait semantics — without you pasting documentation.

  • Let it build the tree first. “Create a project for this repo with Smoke, Regression and In-trip folders, then file the tests.” Structure the agent creates is the structure QA inherits — the same projects and folders the team sees in the app.
  • Ask for assertions. “Make sure it verifies the total, not just that the page loads.” A test that only clicks can’t fail.
  • Say which screen size. “Write these as mobile tests” makes the agent set the mobile viewport (375 wide, iPhone user agent, touch) on each test, and run_test can render a whole run at one preset. A green run at desktop proves nothing about the phone layout most of your users see.
  • Point at a diff. “This PR changed the signup flow — update the tests that cover it” is where code-awareness pays off most.
  • Let it start signed in. Behind a login, the agent can pass a session with the run (run_test → session_cookies) — cookies your app already accepts, minted per run and never stored — or use the project’s stored session once an admin allows agent-created tests to. See Start a test signed in.
  • Let it read the failure. A run result carries every step with its error and a screenshot the agent can open, so “the checkout test failed — fix it” is a loop it can close on its own, and the report you get is the repaired test.
  • Let QA take it from there. Once the test exists, curating test sets, schedules, and failure triage happens in Marriska — that hand-off is the point.

Set MARRISKA_API_URL alongside the key (defaults to https://api.marriska.com/api/v1).