Available actions
The 23 MCP tools for projects, test cases, test plans, runs, environments and issues.
Autonomy MCP has 23 tools, one for each HTTP API operation, with the same arguments, results and rules. A tool's name is autonomy_ plus the operation name with dots replaced by underscores: run.get is autonomy_run_get.
Projects
| Tool | Purpose |
|---|---|
autonomy_project_list | List the projects you can reach. Start here to find the projectId other tools take. |
autonomy_project_get | Fetch one project, including its product knowledge. |
Test cases
| Tool | Purpose |
|---|---|
autonomy_test_case_list | List test cases, newest first. Filter by projectId, platform or a name query. Use it before creating a case so existing coverage is reused. |
autonomy_test_case_get | Fetch one test case with its outcome steps and their attachments. |
autonomy_test_case_create | Create a test case in a project from outcome steps. |
autonomy_test_case_update_steps | Replace a test case's whole step list. Always needs confirm: true. |
autonomy_test_case_archive | Archive a test case. Its runs and results are kept. |
Each step is an outcome in plain words (text) with a stable id and optional attachments: account, inbox, phone, file, screenshot or data. Attachments are test data unless exact is true. A data attachment can carry a value (including {{env.NAME}}), or an intent such as "A strong password" for the agent to choose one. With secret: true, the value is write-only. See Outcome steps for every field and limit.
Test plans
| Tool | Purpose |
|---|---|
autonomy_test_plan_list | List test plans. Filter by projectId or a name query. |
autonomy_test_plan_get | Fetch one test plan with its ordered test cases. |
autonomy_test_plan_create | Create a test plan in a project, optionally with its first test cases. |
autonomy_test_plan_set_members | Replace a test plan's test cases. Needs confirm: true when cases would be removed. |
Runs
| Tool | Purpose |
|---|---|
autonomy_run_trigger | Queue runs of one test case or one test plan, in a saved environment or against fresh targets. Returns right away. |
autonomy_run_list | List recent runs, newest first. Filter by projectId, testCaseId, status, environmentSlug or branch. Check here before starting duplicate work. |
autonomy_run_get | Fetch a run's result, each step's result and what it created. Waits for a change with cursor and waitMs. |
autonomy_run_step_actions | List everything the agent did to reach each step's outcome, including the Final check. Values you saved as secrets are masked. |
autonomy_run_evidence | Get each step's outcome, result, explanation, Final check and short-lived screenshot and video links. |
Environments
| Tool | Purpose |
|---|---|
autonomy_environment_list | List environments with their platform targets. Value names are shown; values never are. |
autonomy_environment_get | Fetch one environment by slug. |
autonomy_environment_upsert | Create an environment in a project, or update one by slug. Updating needs confirm: true. |
Issues
| Tool | Purpose |
|---|---|
autonomy_issue_list | List issues, newest first. Filter by projectId, environmentSlug, status, kind, or runId for one run's issues. |
autonomy_issue_create | File a Bug or Risk in the environment where it was seen, citing runs with runIds. |
autonomy_issue_comment | Add a plain-text comment to an issue. |
autonomy_issue_set_status | Set an issue to open, resolved or ignored. |
An issue never changes a run's or a step's result.
Extra inputs on MCP
Every tool also accepts:
response_format:"markdown"(the default) or"json". Both come with the same structured result; this only changes the text the assistant reads. Very long text is cut at 24,000 characters; use tighter filters or a smallerlimit.idempotencyKey(tools that change something): optional on MCP. If the client leaves it out, Autonomy makes a new one for each call, so a retried call isn't recognized as a repeat and can do the work twice. Pass your own key when a retry must not repeat the change, such asautonomy_run_trigger.
Errors come back as a tool error with the text <CODE>: <message>, using the same error codes as the HTTP API.
Confirming replacements
Autonomy doesn't ask a second question inside MCP. Tools that would replace something need confirm: true:
autonomy_test_case_update_stepsalways, because it replaces the whole step list.autonomy_test_plan_set_memberswhen test cases would be removed.autonomy_environment_upsertwhen the slug exists and fields or targets are given.
Without it, nothing is written. The tool returns INVALID_ARGUMENT with confirmRequired: true and a wouldChange summary. Read the summary, show it to the person if it matters, and only then call again with confirm: true. Don't add confirmation by reflex.
Follow a run
- Start it. Call
autonomy_run_triggerwith atestCaseId(ortestPlanId) and anenvironmentSlugortargets. Keep therunIds. - Wait for it. Call
autonomy_run_getwith therunId. Save thecursor. Whilenextiswait, call again with thatcursorandwaitMs: 25000.timedOut: trueonly means nothing changed during the wait: call again. - See what the agent did. Call
autonomy_run_step_actions, withstepIndexto focus on one step. While the run is going, read again from the start wheneverrunCursorchanges. - Read the evidence. When the run ends, and especially when
nextisevidence, callautonomy_run_evidence. Each step has its outcome, result, explanation, Final check and media links. Links expire after 15 minutes; call the tool again for fresh ones. - Check the issues. Call
autonomy_issue_listwith therunIdto see the issues the run found or showed. They're kept apart from the result.
next is advice, not authority. Decide from status and the steps. A run ends as passed, failed, couldnt_start or cancelled. A failed step's explanation says whether the outcome wasn't reached or the agent couldn't show it was; read it before treating the failure as a bug. A step with failureCategory: "runner" failed because of Autonomy, not the app. See Runs and evidence for every field.
Trigger targets
autonomy_run_trigger accepts platforms from web, api, ios and android. Use environmentSlug when the target is saved, or targets for a fresh deployment or build, not both.
| Platform | Target fields |
|---|---|
| Web | targets.web.baseUrl |
| API | targets.api.baseUrl, optional targets.api.runtimeValues |
| iOS (coming soon) | targets.ios.bundleId, plus targets.ios.artifactUrl or a scanned targets.ios.storageId |
| Android | targets.android.packageName, plus targets.android.artifactUrl or a scanned targets.android.storageId |
Add branch, pr and deployment.commitSha to link the runs to a pull request or commit.
OAuth scopes
| Scope | Tools |
|---|---|
autonomy:read | Every list and get tool, autonomy_run_step_actions, autonomy_run_evidence |
autonomy:test_cases:write | autonomy_test_case_create, autonomy_test_case_update_steps, autonomy_test_case_archive |
autonomy:test_plans:write | autonomy_test_plan_create, autonomy_test_plan_set_members |
autonomy:runs:write | autonomy_run_trigger |
autonomy:environments:write | autonomy_environment_upsert |
autonomy:issues:write | autonomy_issue_create, autonomy_issue_comment, autonomy_issue_set_status |
See Organization access for how each scope appears on the consent screen.
Agent recipes
Check existing coverage
Use Autonomy MCP to find the project for this repository, then list its relevant test cases, test plans and recent runs.
If a run already exists for this branch or PR, summarize its status before starting anything new.Run a PR preview
Use Autonomy MCP to run the relevant test case against this preview URL.
Pass the branch, PR number and commit SHA, and your own idempotencyKey. Wait for the run to finish, then summarize each step's result and explanation.Diagnose a run that didn't pass
Fetch the Autonomy run, its Step Actions and its evidence before proposing a fix.
Cite the step, its explanation, the Final check and a media link that support your conclusion.
List any issues the run found.Didn’t find it?