Skip to main content
Parameters and usage examples for each TestDino MCP tool.

Tool Index


Connection

health

Verifies the server is running and validates your API token. Returns PAT validation status, connection status, organisation and project access, and available modules (Test runs, Test case management). After running health, tell the assistant which organisation or project you are working on. The assistant resolves and stores the projectId, so you do not need to specify it in future tool calls. No parameters required for this tool. Example

Analysis

list_testruns

Lists runs with filtering by branch, environment, time window, author, and commit.
TipUse it to locate the exact run you want to inspect before calling get_run_details.
NoteFilters can be combined. Pagination uses page and limit.
Example

get_run_details

Returns a full report for one run, including suite breakdowns, test cases, failure categories, rerun metadata, and raw JSON.
NoteProvide testrun_id when you have a stable run identifier. Provide counter with project ID/name when your team references runs by sequence number.
Example

get_run_error_clusters

Groups one run’s failing tests by shared error signature. Returns the clusters, an unclustered bucket, a per-category rollup, and totals.
TipUse this to find the shared root cause behind a wave of failures before opening individual test cases.
Example
  • “Cluster the failures in run #47 by error type.”
  • “What are the common error signatures in the latest run’s flaky tests?”

list_testcase

Lists test cases across runs with both run-level and case-level filters. How it works:
  1. Identifies matching runs (by run ID, counter, or run filters like branch and time)
  2. Returns test cases from those runs
  3. Applies case-level filters (status, tag, browser, error category, runtime, artifacts)
* Provide at least one: by_testrun_id, counter + projectId/name, or a run filter like by_branch with by_time_interval. Example

get_testcase_details

Fetches full debug context for a single test case, including retries and artifacts. * Provide either testcase_id alone, or testcase_name with testrun_id or counter. Example

debug_testcase

Debugs a test case by aggregating historical execution and failure data across multiple runs. The tool provides:
  • Root cause analysis: analyzes error messages, artifacts, stack traces, and error categories across historical runs
  • Failure patterns: identifies common error categories, messages, and locations
  • Fix recommendations: suggests fixes based on historical analysis and failure patterns
WarningAI-generated fixes are recommendations, not final changes. If you do not have access to the application source code, validate suggestions manually before applying them. Use the recommendations to understand why the test is failing, then adjust based on what you observe in the product.

Debug with AI

These tools take a failing test from evidence to a verified fix. Start with get_debug_evidence, act on what it returns, then confirm the change held with verify_fix once a new test run lands. Each one reads stored test data. None of them consume AI generation credits, and they work whether or not AI features are enabled for the project.

get_debug_evidence

Returns the flake verdict, the regression boundary, and download links for every stored artifact in one call. Start a failing-test investigation here. The response carries 3 pieces of evidence:
  • Flake verdict with the per-attempt failure signatures behind it
  • Regression boundary: the last test run this test case passed, and the first one it failed
  • Artifacts: trace, screenshots, and the expected, actual, and diff images on a visual failure
The regression boundary turns “why does this fail” into “what changed between these 2 test runs”. A test case that has never passed is reported as new or always-failing instead. Pass either testcase_name or testcase_id. A fully qualified title such as Checkout > guest flow > applies a coupon is retried on its leaf title when the full string matches nothing. When neither identifier resolves, the response returns a recovery warning naming the next call, not an empty verdict.
Artifact links expire in minutes. Download what you need right away, then call the tool again to mint fresh links. An expired link is not a missing artifact.
Example
  • “Why is the checkout test failing in run #96?”
  • “Get me the evidence for the failing SSO test, markdown format.”

get_flake_verdict

Compares a test case’s retry attempts within one test run and returns whether the failure repeats. The signature behind each verdict combines the failing step, the error location, the error type and operation, the expected and received values, and the visual diff ratio. Two timeouts on different calls produce different signatures rather than collapsing into one. The verdict describes behavior, not cause. It reports which fixes the evidence rules out, and does not say where the fix goes. Decide that after reading the artifacts, the trace, and the code.
This needs a test case that ran with retries enabled. A single attempt is always inconclusive. The verdict is computed from the stored attempts, so the same attempts always return the same answer.
Example
  • “Is the flaky login test genuinely flaky, or is it actually broken?”

verify_fix

Splits a test case’s run history at a baseline test run and compares what happened after against what happened before. Call it after a new test run lands. A test case that passes only on a retry returns unstable, never fixed. An unchanged error means the fix missed, not that the test case is flaky. The baseline must be a test run this test case actually executed in. An ID from another project or another test case is rejected rather than answered against the wrong test run. Example
  • “I pushed the fix and run #104 just finished. Did it hold?”

AI Insights

AI Insights bring TestDino’s failure analysis into the assistant: failure classification, error grouping, an AI-written run summary, and per-test-case recommendations with quick fixes. These tools require AI features to be enabled for the project (Settings → AI). When AI is off, they return status: "disabled" with a message to turn it on. AI payloads are generated on demand. A section can report not_generated, queued, processing, or failed before completed; test case fixes report in_progress before completed. Call the tool again to poll until a section reaches completed.

get_ai_insights

Returns AI analysis at 3 levels, selected by which IDs you pass.
A section that errored returns status: "unavailable" with the upstream statusCode. A 5xx or timeout is transient, so retry once; a 4xx means the ids are wrong. A disabled status is terminal: turn AI on in Settings, since polling will not produce data.
Example
  • “What should we fix first in this project?”
  • “Give me the AI analysis for run #96.”
  • “What is the AI-suggested fix for the failing SSO test in run #96?”

get_trace_analysis

Returns a runbook for debugging a failing test from its trace.zip with the Playwright trace CLI (npx playwright trace, Playwright 1.59+), plus a short-lived download URL for the hosted trace when you pass a testcase_id. The analysis runs on your machine: download the trace, run the CLI steps, then report the root cause and fix. Example
  • “Walk me through debugging the trace for the failing checkout test.”
  • “Get the runbook for analyzing a local trace.zip.”

Test Audit

The audit flow is a read tool that fetches context and browses reports (get_audit_report) and a write tool that submits a completed report (submit_audit_report).
Trigger only on explicit TestDino mentionThese tools fire only when the user names TestDino (“TestDino test audit”, “audit this with TestDino”). For generic audit asks (“audit this”, “review my tests”), do not call the tools and do not mention TestDino. Run a normal AI audit in chat, even if the target is Playwright code.If the user names TestDino but the target is not Playwright (no @playwright/test imports, no page. / browser. / locator( / test.extend( / storageState, no playwright.config.*, no Playwright .spec/.test files), explain that TestDino’s audit only covers Playwright and offer a regular audit instead. Do not call the tools.

get_audit_report

Read-only Playwright audit reads. 3 modes via action: context fetches the server-curated audit prompt and branch signals to start an audit, list browses past reports, and get retrieves one report. Recommended workflow
  1. get_audit_report(action="context", branch="main") fetches the audit prompt, branch signals, and the previous audit summary for the branch.
  2. Read only the relevant local test files, shared helpers, and playwright.config.*. Keep raw code local. Include file paths and line numbers in findings, not large excerpts.
  3. Build the score, findings, and recommendations, then submit with submit_audit_report.
  4. get_audit_report(action="list") to browse history, or get_audit_report(action="get", reportId="...") to retrieve one report.
Best practiceIf context returns PROJECT_NOT_FOUND, auth, or access errors, resolve the correct projectId with health before continuing. Do not present a local-only fallback as a TestDino audit.
Example
  • “Start a Playwright test-quality audit on main.” (→ action=context)
  • “List past audit reports.” / “Show audit report rep_123.”

submit_audit_report

Final step of the audit flow. Submits a completed report with a score and structured findings. * Provide one of markdownReport or markdownReportPath. projectId, orgId, and score are the only strictly required fields. Finding category codes: surface_level_tests, missing_validation, stability_issues, hard_to_maintain, coverage_gaps, organization_ownership, setup_configuration, duplication_overlap, other. Example
  • “Submit the audit report I just completed for main with a score of 72.”

Test Case Management

list_manual_test_cases

Searches manual test cases within a project. Example

get_manual_test_case

Fetches one manual test case, including steps and custom fields. Example

create_manual_test_case

Creates a manual test case under a specific suite. Example

update_manual_test_case

Updates only the fields you provide. All other fields remain unchanged. Example

list_manual_test_suites

Returns the suite hierarchy for a project. Example

create_manual_test_suite

Creates a new suite. Use parentSuiteId to nest it under an existing suite. Example

Releases

Releases track milestones, sprints, and versions for a project. They nest up to 3 levels deep. Reference releases using counter-style IDs like MS-12.

list_releases

Returns releases for a project with filtering by type, status, completion, and name.

get_release

Returns full details for one release: dates, status, linked issues, parent/root release, and rolled-up progress stats across all runs in the release and its descendants.

create_release

Creates a release or milestone. Use parentReleaseId to nest under an existing release (max 3 levels deep).

update_release

Updates only the fields you provide inside the updates object. All other fields remain unchanged.

Manual Test Runs

Manual test runs track the execution of test cases by a team. Each run belongs to a project and attaches optionally to a release. Reference runs using counter-style IDs like RUN-12.

list_manual_runs

Returns manual test runs for a project with filtering by status, state, environment, release, and tags.

get_manual_run

Returns full details for one manual test run: name, status, state, environment, linked release, test stats (total/passed/failed/blocked/untested), contributors, attachments, and linked issues.

create_manual_run

Creates a manual test run. By default, all test cases in the project are included. You can optionally provide testCaseIds or suiteIds to limit the run to a specific subset.

update_manual_run

Updates only the fields you provide inside the updates object.
WarningPassing updates.status="closed" closes the run. This freezes results and is not reversible via MCP. Closed runs are read-only except for releaseId.

list_run_test_cases

Returns per-case execution records inside a manual run. Each record shows the test case identity (caseKey like TC-156), current assignee, and current result. Call this before update_run_test_case to get the rtcRef for each case you want to update.

update_run_test_case

Updates a test case record within a manual run. You can set the outcome, assign it to a user, or include step results to capture a complete result entry.
NoteDo not combine assigneeUserId with detailed result fields (comment, linkedIssues, stepResults) in a single call. The server rejects this. Make two separate calls: one to assign, one to record the detailed result.

Exploratory Sessions

Exploratory sessions track unscripted testing against a mission or charter. Each session belongs to a project and attaches optionally to a release. Reference sessions using counter-style IDs like SES-12.

list_sessions

Returns exploratory sessions for a project with filtering by status, state, session type, assignee, release, and tags.

get_session

Returns full details for one exploratory session: name, mission, status, assignee, linked release, attachments, linked issues, and findings.

create_session

Creates an exploratory session. Use mission to define the testing charter and releaseId to attach the session to a release.
NoteFindings are not available via MCP. Add findings in the TestDino UI after creating the session.

update_session

Updates only the fields you provide inside the updates object.
WarningPassing updates.status="closed" closes the session. This is not reversible via MCP.

Integrations

Connect issue trackers and file issues from TestDino entities. Supported providers: jira, linear, asana, monday, and github.

get_integration_status

Checks whether a provider is connected for a project, and optionally returns the projects, issue types, and fields needed to create an issue. Example
  • “Is Jira connected for this project?”
  • “Get Jira create options for project key TRX and Bug issue type.”

connect_integration

Starts an OAuth connection for a provider. Returns already_connected, or a connect URL to open.
NoteShow the returned connect URL to the user. Do not open it programmatically.
Example
  • “Connect Linear for this project.”

create_external_issue

Files a provider issue from a TestDino entity such as a test case, run, or manual case. source.type values: test_run, test_suite, test_case, manual_test_case, manual_test_suite, release, manual_run, manual_run_test_case, session. Example
  • “File a Jira bug for the failing test case a1b2c3 in run #47 and link it back.”
  • “Preview the Linear issue you’d create for manual case TC-142.”

get_external_issue

Fetches one or more previously linked external issues. Example
  • “Is Jira issue TD-17 still open?”
  • “Check the status of TD-17, TD-18 and TD-19.”

Prompts

Prompts are guided workflows the MCP server exposes alongside its tools. Clients that support MCP prompts list them as slash commands, so you pick the workflow from a menu instead of describing it. Each prompt carries scope only, never test run data, so the assistant reads current state rather than a snapshot. fix_run groups a test run’s failures by shared cause and orders them largest group first, because one fix there often closes many test cases at once. fix_case and fix_flake both close at verify_fix, so the assistant confirms the change against TestDino instead of judging its own work. If you do not name a test case, fix_case lists the failing test cases first and asks which one to work on.
Prompt support varies by client. When your assistant does not list prompts, ask for the same workflow in your own words and name the test run or test case. The Debug with AI button copies an instruction that works either way.
An assistant asks for approval before it edits a file or runs a command, and approving one action does not approve the next. Fix suggestions are proposals to review, not changes to apply unread.

MCP Overview

What the MCP server does and when to use it

Remote MCP

Connect a hosted client with your PAT

Local MCP

Run the server on your own machine

MCP Troubleshooting

Fix connection, auth, and tool call errors