Referencia de herramientas MCP
Esta página se genera desde apps/worker/src/mcp/registry.ts — a continuación se listan todas las herramientas que registra el servidor MCP de Probara, con su nombre exacto, descripción y campos de entrada. Nunca puede desincronizarse del servidor: regenérala con pnpm mcp-tools:generate cada vez que se agregue, elimine o renombre una herramienta.
create_project
Sección titulada «create_project»Call this to create a new project in the caller organization. Requires name (string) and id (an uppercase project code starting with a letter, e.g. “ACME”). Requires the project management permission, so only an owner or admin role may create a project — a member or viewer token receives 403 forbidden. Returns the created project, including its ulid.
Parámetros
name— obligatorioid— obligatoriodescription— opcionalidempotency_key— opcional
list_projects
Sección titulada «list_projects»Call this to list projects in the caller organization with offset pagination. Accepts page (1-based) and pageSize, plus optional q/include/filters. Returns items plus page, pageSize, and total so you can page through the full collection by incrementing page.
Parámetros
page— opcionalpageSize— opcionalq— opcionalinclude— opcionalmemberUlid— opcionalruns— opcionaldefects— opcionalmilestones— opcionalcases— opcionalstatus— opcional
check_project_id_available
Sección titulada «check_project_id_available»Call this to check whether a candidate project id is free before creating a project. Requires id (the candidate uppercase project code). Returns { available: boolean }.
Parámetros
id— obligatorio
get_project
Sección titulada «get_project»Call this to fetch a single project within the caller organization. Requires project_id (the project’s human-readable code, e.g. “ACME” — the same value returned as id by create_project).
Parámetros
project_id— obligatorio
update_project
Sección titulada «update_project»Call this to update a project’s name, id, or description. Requires project_id and at least one of name/id/description to change.
Parámetros
project_id— obligatorioname— opcionalid— opcionaldescription— opcionalidempotency_key— opcional
delete_project
Sección titulada «delete_project»Call this to permanently delete a project. Requires project_id. Returns { deleted: true } on success.
Parámetros
project_id— obligatorioidempotency_key— opcional
archive_project
Sección titulada «archive_project»Call this to archive an active project. Requires project_id. Reversible: hides the project from list_projects by default; does not gate reads/writes or release a project seat.
Parámetros
project_id— obligatorioidempotency_key— opcional
unarchive_project
Sección titulada «unarchive_project»Call this to restore an archived project to active. Requires project_id.
Parámetros
project_id— obligatorioidempotency_key— opcional
create_suite
Sección titulada «create_suite»Call this to create a new suite inside a project. Requires project_id (the project code) and name; optionally description and parentUlid to nest under an existing suite in the same project. Returns the created suite, including its ulid and displayId.
Parámetros
project_id— obligatorioname— obligatoriodescription— opcionalparentUlid— opcionalidempotency_key— opcional
list_suites
Sección titulada «list_suites»Call this to list the root-level suites of a project with cursor pagination. Requires project_id. Accepts limit and cursor; feed the returned nextCursor back as cursor to fetch the next page — the field is absent once you have reached the last page.
Parámetros
project_id— obligatoriolimit— opcionalcursor— opcional
get_suite_by_display_id
Sección titulada «get_suite_by_display_id»Call this to fetch a suite by its human-readable display id (e.g. “ACME-S3”). Requires project_id and display_id.
Parámetros
project_id— obligatoriodisplay_id— obligatorio
list_suite_children
Sección titulada «list_suite_children»Call this to list the direct child suites of a parent suite with cursor pagination. Requires project_id and suite_ulid (the parent suite’s ulid). Accepts limit and cursor.
Parámetros
project_id— obligatoriosuite_ulid— obligatoriolimit— opcionalcursor— opcional
clone_suite
Sección titulada «clone_suite»Call this to deep-clone a suite (and by default its cases) into a destination project/suite. Requires project_id (the source suite’s project) and suite_ulid (the source suite), plus destinationProjectCode and destinationSuiteUlid (null clones into the destination project root); optionally prefix and strategy (“casesAndSuites” default, or “suitesOnly” to clone structure only, no cases).
Parámetros
project_id— obligatoriosuite_ulid— obligatoriodestinationProjectCode— obligatoriodestinationSuiteUlid— obligatorioprefix— opcionalstrategy— opcionalidempotency_key— opcional
get_suite
Sección titulada «get_suite»Call this to fetch a single suite by its ulid. Requires suite_ulid.
Parámetros
suite_ulid— obligatorio
update_suite
Sección titulada «update_suite»Call this to update a suite’s name, description, or parent. Requires suite_ulid and at least one of name/description/parentUlid to change.
Parámetros
suite_ulid— obligatorioname— opcionaldescription— opcionalparentUlid— opcionalidempotency_key— opcional
delete_suite
Sección titulada «delete_suite»Call this to permanently delete a suite. Requires suite_ulid. If the suite (or its descendants) still has test cases, caseDisposition (“deleteCases” or “moveToParent”) is required. Returns { deleted: true } on success.
Parámetros
suite_ulid— obligatoriocaseDisposition— opcionalidempotency_key— opcional
get_suite_case_counts
Sección titulada «get_suite_case_counts»Call this to read the active/archived/total test case counts for a suite and its descendants. Requires suite_ulid.
Parámetros
suite_ulid— obligatorio
get_test_case_steps
Sección titulada «get_test_case_steps»Call this to read the ordered list of steps (and their committed attachments) for a test case. Requires case_ulid.
Parámetros
case_ulid— obligatorio
replace_test_case_steps
Sección titulada «replace_test_case_steps»Call this to replace ALL steps of a test case with a new ordered list in one write. Requires case_ulid and steps (an array of { position, action, data?, expected?, attachments? }); include a previously staged attachment reference (ulid + position) in a step to commit it. Returns the full replacement list.
Parámetros
case_ulid— obligatoriosteps— obligatorioidempotency_key— opcional
create_test_case
Sección titulada «create_test_case»Call this to create a new test case inside a project. Requires project_id (the project code) and title; optionally description, suiteUlid, milestoneUlid, tags, and an initial ordered steps array. Returns the created test case, including its ulid and displayId.
Parámetros
project_id— obligatoriotitle— obligatoriodescription— opcionalsuiteUlid— opcionalmilestoneUlid— opcionaltags— opcionalsteps— opcionalidempotency_key— opcional
list_test_cases
Sección titulada «list_test_cases»Call this to list the test cases of a project with cursor pagination. Requires project_id. Accepts limit and cursor (feed the returned nextCursor back as cursor for the next page), plus optional suiteUlid, archived (“true”/“false”), and milestoneUlid filters.
Parámetros
project_id— obligatoriolimit— opcionalcursor— opcionalsuiteUlid— opcionalarchived— opcionalmilestoneUlid— opcional
search_test_cases
Sección titulada «search_test_cases»Call this to search test cases (and optionally suites) within a project by a text term. Requires project_id and q. Accepts scope (“all” default, “cases”, or “suites”), limit, and cf (repeatable — pass the same argument more than once for several “<fieldUlid>:<value[,value…]>” filters at once, every entry ANDed together). Returns items and total.
Parámetros
project_id— obligatorioq— opcionalscope— opcionalcf— opcionallimit— opcional
get_test_case_by_display_id
Sección titulada «get_test_case_by_display_id»Call this to fetch a test case by its human-readable display id (e.g. “ACME-42”). Requires project_id and display_id.
Parámetros
project_id— obligatoriodisplay_id— obligatorio
clone_test_case
Sección titulada «clone_test_case»Call this to clone a single test case into a destination project/suite. Requires project_id (the source case’s project) and case_ulid (the source case), plus destinationProjectCode and destinationSuiteUlid (null clones into the destination project root); optionally prefix, applied to the cloned title.
Parámetros
project_id— obligatoriocase_ulid— obligatoriodestinationProjectCode— obligatoriodestinationSuiteUlid— obligatorioprefix— opcionalidempotency_key— opcional
bulk_archive_test_cases
Sección titulada «bulk_archive_test_cases»Call this to archive several test cases in one project in a single call. Requires project_id and caseUlids (1-200 ulids). Returns { affected, unchanged } counts.
Parámetros
project_id— obligatoriocaseUlids— obligatorioidempotency_key— opcional
bulk_clone_test_cases
Sección titulada «bulk_clone_test_cases»Call this to clone several suites and/or loose test cases from one project into a destination project in a single call. Requires project_id, destinationProjectCode, destinationSuiteUlid (null for the destination root), strategy (“casesAndSuites” or “suitesOnly”), and at least one non-empty array of caseUlids/suiteUlids. Returns { destinationProjectCode, suitesCreated, casesCloned }.
Parámetros
project_id— obligatoriocaseUlids— obligatoriosuiteUlids— obligatoriodestinationProjectCode— obligatoriodestinationSuiteUlid— obligatoriostrategy— obligatorioidempotency_key— opcional
get_test_case
Sección titulada «get_test_case»Call this to fetch a single test case by its ulid. Requires case_ulid.
Parámetros
case_ulid— obligatorio
update_test_case
Sección titulada «update_test_case»Call this to update a test case in one consolidated write. Requires case_ulid and at least one of patch (title/description/suiteUlid/milestoneUlid/tags), steps (full replacement list), or customFieldValues.
Parámetros
case_ulid— obligatoriopatch— opcionalsteps— opcionalcustomFieldValues— opcionalidempotency_key— opcional
delete_test_case
Sección titulada «delete_test_case»Call this to permanently delete a test case. Requires case_ulid. Returns { deleted: true } on success.
Parámetros
case_ulid— obligatorioidempotency_key— opcional
archive_test_case
Sección titulada «archive_test_case»Call this to archive an active test case. Requires case_ulid.
Parámetros
case_ulid— obligatorioidempotency_key— opcional
unarchive_test_case
Sección titulada «unarchive_test_case»Call this to restore an archived test case to active. Requires case_ulid.
Parámetros
case_ulid— obligatorioidempotency_key— opcional
stage_step_attachment
Sección titulada «stage_step_attachment»Call this to upload ONE image attachment (png/jpeg/webp) for a test case step, before including its returned reference in replace_test_case_steps. Requires case_ulid, filename, content_type, and data_base64 (the raw file bytes, base64-encoded). Decoded bytes must not exceed 10 MiB. Returns the staged attachment reference to reuse in a step’s attachments array.
Parámetros
case_ulid— obligatoriofilename— obligatoriocontent_type— obligatoriodata_base64— obligatorioidempotency_key— opcional
delete_step_attachment
Sección titulada «delete_step_attachment»Call this to permanently delete a committed step attachment. Requires case_ulid and attachment_ulid. Returns { deleted: true } on success.
Parámetros
case_ulid— obligatorioattachment_ulid— obligatorioidempotency_key— opcional
create_run
Sección titulada «create_run»Call this to create a new test run inside a project. Requires project_id (the project code) and name. Requires caseUlids (1-5000) UNLESS planUlid is supplied, in which case an omitted caseUlids seeds from the plan’s current selection — a run cannot be created empty either way. Optionally description, environmentId, environment (legacy free-text), defaultAssigneeUlid, caseAssignees, startedAt, milestoneId, customFieldValues (an array of { fieldUlid, value } to seed the run’s custom fields in the same call), planUlid (link the run to a test plan), and configurationUlids (tag the run with one configuration combination — at most one value per group, rejected otherwise). This ONE call creates ONE run: linking a plan and naming a combination never fans out into several runs, even when the plan has many combinations — call it once per combination you actually want a run for. Returns the created run, including its ulid.
Parámetros
project_id— obligatorioname— obligatoriodescription— opcionalenvironmentId— opcionalenvironment— opcionaldefaultAssigneeUlid— opcionalcaseUlids— opcionalcaseAssignees— opcionalstartedAt— opcionalmilestoneId— opcionalcustomFieldValues— opcionalplanUlid— opcionaltags— opcionalconfigurationUlids— opcionalidempotency_key— opcional
list_runs
Sección titulada «list_runs»Call this to list runs in a project with offset pagination. Requires project_id. Accepts page (1-based), pageSize, q, status (comma-separated projected statuses), env (repeatable — pass the same argument more than once to filter by several environment names at once), authorUlid, assigneeUlid (“empty” for unassigned), milestoneUlid, and cf (repeatable — pass the same argument more than once for several “<fieldUlid>:<value[,value…]>” run custom-field filters at once, every entry ANDed together). Returns items plus page, pageSize, and total.
Parámetros
project_id— obligatoriopage— opcionalpageSize— opcionalq— opcionalstatus— opcionalenv— opcionalauthorUlid— opcionalassigneeUlid— opcionalmilestoneUlid— opcionalcf— opcional
list_run_environments
Sección titulada «list_run_environments»Call this to list the distinct environment names used by runs in a project (no paging — the full set is returned). Requires project_id.
Parámetros
project_id— obligatorio
clone_run
Sección titulada «clone_run»Call this to “run again”: clone a run into a new run in the same project (“Run again”). Requires project_id, run_ulid (the source run), and title. Optionally cloneAssignees (carry each case’s assignee into the new run) and statusFilter (an array of outcome statuses — omitted/empty clones every case). Returns the created run.
Parámetros
project_id— obligatoriorun_ulid— obligatoriotitle— obligatoriocloneAssignees— opcionalstatusFilter— opcionalidempotency_key— opcional
get_run
Sección titulada «get_run»Call this to fetch a single run by its ulid. Requires run_ulid.
Parámetros
run_ulid— obligatorio
update_run
Sección titulada «update_run»Call this to update a run’s name, description, defaultAssigneeUlid, environmentId, milestoneId, or configurationUlids (replace-set: an array replaces the whole combination, [] clears it, omitted leaves it untouched). Requires run_ulid and at least one field to change. Does NOT accept customFieldValues — call set_run_custom_field_values to reconcile a run’s custom-field values instead. A configuration-only body is still rejected on an aborted run — aborted runs are terminal-frozen and take no exception.
Parámetros
run_ulid— obligatorioname— opcionaldescription— opcionaldefaultAssigneeUlid— opcionalenvironmentId— opcionalmilestoneId— opcionaltags— opcionalconfigurationUlids— opcionalidempotency_key— opcional
reconcile_run_cases
Sección titulada «reconcile_run_cases»Call this to REPLACE the full set of cases on a run with the given desired selection — this is DESTRUCTIVE: any case currently on the run whose ulid is not in caseUlids is removed. An empty caseUlids array removes every case from the run. Requires run_ulid and caseUlids (0-5000); optionally caseAssignees.
Parámetros
run_ulid— obligatoriocaseUlids— obligatoriocaseAssignees— opcionalidempotency_key— opcional
close_run
Sección titulada «close_run»Call this to close an open run, finalizing its aggregate outcome. Requires run_ulid. Returns the closed run (state=“closed”, finishedAt set).
Parámetros
run_ulid— obligatorioidempotency_key— opcional
abort_run
Sección titulada «abort_run»Call this to abort an open run before it finishes, recomputing its aggregate outcome from cases executed so far. Requires run_ulid. Returns the aborted run (abortedAt set).
Parámetros
run_ulid— obligatorioidempotency_key— opcional
delete_run
Sección titulada «delete_run»Call this to permanently delete a run. Requires run_ulid. Only the owner or admin role may delete a run — any other role is rejected as forbidden. Returns { deleted: true } on success.
Parámetros
run_ulid— obligatorioidempotency_key— opcional
set_run_custom_field_values
Sección titulada «set_run_custom_field_values»Call this to reconcile a run’s custom-field values to an EXACT desired set: values for fields not present in the input are cleared (or rejected if the field is required). Requires run_ulid and values (an array of { fieldUlid, value }). Returns { customFieldValues } with the full resulting set. There is no single-value update tool for runs — call this with the full desired set.
Parámetros
run_ulid— obligatoriovalues— obligatorioidempotency_key— opcional
bulk_mark_run_cases
Sección titulada «bulk_mark_run_cases»Call this to mark up to 500 run cases with the SAME status in one batch. Requires run_ulid, caseUlids (1-500), and status (passed/failed/skipped/blocked). Rejects if the run is closed. Returns { affected, unchanged }.
Parámetros
run_ulid— obligatoriocaseUlids— obligatoriostatus— obligatorioidempotency_key— opcional
bulk_assign_run_cases
Sección titulada «bulk_assign_run_cases»Call this to assign (or unassign, with assigneeUlid = null) up to 500 run cases in one batch. Requires run_ulid, caseUlids (1-500), and assigneeUlid. Rejects if the run is closed. Returns { affected, unchanged }.
Parámetros
run_ulid— obligatoriocaseUlids— obligatorioassigneeUlid— obligatorioidempotency_key— opcional
bulk_retry_run_cases
Sección titulada «bulk_retry_run_cases»Call this to reset up to 500 marked run cases back to retested in one batch. Requires run_ulid and caseUlids (1-500). Rejects if the run is closed. Returns { affected, unchanged }.
Parámetros
run_ulid— obligatoriocaseUlids— obligatorioidempotency_key— opcional
bulk_remove_run_cases
Sección titulada «bulk_remove_run_cases»Call this to remove up to 500 cases from a run in one batch. Requires run_ulid and caseUlids (1-500). Rejects if the run is closed. Returns { affected, unchanged }.
Parámetros
run_ulid— obligatoriocaseUlids— obligatorioidempotency_key— opcional
bulk_submit_run_result
Sección titulada «bulk_submit_run_result»Call this to atomically submit the SAME result to up to 500 run cases in one batch, optionally creating or attaching ONE defect linked to every affected case. Requires run_ulid, caseUlids (1-500), and status. Optionally totalDurationMs, notes, attachments, and defect (only valid when status is failed or blocked): defect.mode=“create” carries a full new defect (title required) or defect.mode=“attach” carries an existing defectUlid with an optional reopen flag. Rejects if the run is closed. Returns { affected, defect? }.
Parámetros
run_ulid— obligatoriocaseUlids— obligatoriostatus— obligatoriototalDurationMs— opcionalnotes— opcionalattachments— opcionaldefect— opcionalidempotency_key— opcional
mark_run_case_step
Sección titulada «mark_run_case_step»Call this to set a single step’s status within a run case. Requires run_ulid, run_case_ulid, step_ulid, and status (passed/failed/skipped/blocked). This only changes the STEP row — the parent case’s own status is untouched (call mark_run_case to mark the case itself). Returns { caseStatus } — the case’s current status, read before this write. Pass amendResult=true only to correct a step of an already-recorded attempt: it skips the project’s step-to-case derivation so no result row is appended, and it is rejected with 422 unless the run case is already in a terminal status.
Parámetros
run_ulid— obligatoriorun_case_ulid— obligatoriostep_ulid— obligatoriostatus— obligatorioamendResult— opcionalidempotency_key— opcional
save_run_case_step_result
Sección titulada «save_run_case_step_result»Call this to persist a step’s actualResult text and reconcile its committed result-attachment refs to an exact set. Requires run_ulid, run_case_ulid, and step_ulid. Optionally actualResult (null clears the saved text, omitted leaves it unchanged) and attachments (present reconciles to that exact set by ulid; omitted leaves committed attachments untouched). Rejects if the run is closed, or if the run case is already marked (no longer untested). Pass amendResult=true only to correct the note of an already-recorded attempt: it lifts that already-marked rejection for a run case in a terminal status, and is itself rejected with 422 on any other status. Returns { actualResult }.
Parámetros
run_ulid— obligatoriorun_case_ulid— obligatoriostep_ulid— obligatorioactualResult— opcionalattachments— opcionalamendResult— opcionalidempotency_key— opcional
list_run_cases
Sección titulada «list_run_cases»Call this to list every case on a run (the route returns the full set — no real paging exists yet, so nextCursor is always absent). Requires run_ulid.
Parámetros
run_ulid— obligatorio
get_run_case
Sección titulada «get_run_case»Call this to fetch full detail for one run case, including steps, linked defects, and result attachments. Requires run_ulid and run_case_ulid.
Parámetros
run_ulid— obligatoriorun_case_ulid— obligatorio
add_run_cases
Sección titulada «add_run_cases»Call this to add up to 500 cases to a run (additive — existing cases are untouched). Requires run_ulid and caseUlids (1-500).
Parámetros
run_ulid— obligatoriocaseUlids— obligatorioidempotency_key— opcional
remove_run_case
Sección titulada «remove_run_case»Call this to remove one case from a run. Requires run_ulid and run_case_ulid. Returns { deleted: true } on success.
Parámetros
run_ulid— obligatoriorun_case_ulid— obligatorioidempotency_key— opcional
retry_run_case
Sección titulada «retry_run_case»Call this to reset a marked run case back to retested, ready for re-execution. Requires run_ulid and run_case_ulid.
Parámetros
run_ulid— obligatoriorun_case_ulid— obligatorioidempotency_key— opcional
open_run_case
Sección titulada «open_run_case»Call this to reopen an individual run case (there is no run-level reopen — this is the per-case equivalent). Requires run_ulid and run_case_ulid.
Parámetros
run_ulid— obligatoriorun_case_ulid— obligatorioidempotency_key— opcional
mark_run_case
Sección titulada «mark_run_case»Call this to submit a result for a single run case — the single-case “submit result” gesture. Requires run_ulid and run_case_ulid, plus status (passed/failed/skipped/blocked). Optionally assigneeUlid and elapsedMs. Appends a result row and returns the case with the new resultUlid.
Parámetros
run_ulid— obligatoriorun_case_ulid— obligatorioassigneeUlid— opcionalstatus— opcionalelapsedMs— opcionalidempotency_key— opcional
list_results
Sección titulada «list_results»Call this to list the append-only result log for a run (cursor pagination). Requires run_ulid.
Parámetros
run_ulid— obligatorio
get_result
Sección titulada «get_result»Call this to fetch the full snapshot for one result: the result row, case header, frozen steps, legacy fields, and result attachments. Requires run_ulid and result_ulid.
Parámetros
run_ulid— obligatorioresult_ulid— obligatorio
patch_result
Sección titulada «patch_result»Call this to enrich an EXISTING result with notes and/or durationMs — never its outcome, never a new result row. Requires run_ulid and result_ulid, plus at least one of notes or durationMs. Rejects with a conflict if the run is closed.
Parámetros
run_ulid— obligatorioresult_ulid— obligatorionotes— opcionaldurationMs— opcionalidempotency_key— opcional
stage_result_attachment
Sección titulada «stage_result_attachment»Call this to upload ONE evidence file of ANY content type for a run result, before including its returned reference in commit_result_attachments. Requires run_ulid, result_ulid, filename, content_type, and data_base64 (the raw file bytes, base64-encoded). Decoded bytes must not exceed 32 MiB. Content type is not pre-checked here — an executable file type is rejected by the server after upload. Rejects if the run is closed. Returns the staged attachment reference.
Parámetros
run_ulid— obligatorioresult_ulid— obligatoriofilename— obligatoriocontent_type— obligatoriodata_base64— obligatorioidempotency_key— opcional
commit_result_attachments
Sección titulada «commit_result_attachments»Call this to reconcile a result’s committed attachments to an EXACT set: staged references are promoted, existing references are kept (position may change), and any committed attachment absent from the list is removed. Requires run_ulid, result_ulid, and attachments (the desired reference set, from stage_result_attachment). Rejects if the run is closed. Returns { attachments }.
Parámetros
run_ulid— obligatorioresult_ulid— obligatorioattachments— obligatorioidempotency_key— opcional
delete_result_attachment
Sección titulada «delete_result_attachment»Call this to permanently delete a committed result attachment. Requires run_ulid, result_ulid, and attachment_ulid. Rejects if the run is closed. Returns { deleted: true }.
Parámetros
run_ulid— obligatorioresult_ulid— obligatorioattachment_ulid— obligatorioidempotency_key— opcional
stage_run_case_step_result_attachment
Sección titulada «stage_run_case_step_result_attachment»Call this to upload ONE image attachment (png/jpeg/webp) for a run-case step result, before including its returned reference in save_run_case_step_result. Requires run_ulid, run_case_ulid, step_ulid, filename, content_type, and data_base64 (the raw file bytes, base64-encoded). Decoded bytes must not exceed 10 MiB. Rejects if the run is closed. Returns the staged attachment reference.
Parámetros
run_ulid— obligatoriorun_case_ulid— obligatoriostep_ulid— obligatoriofilename— obligatoriocontent_type— obligatoriodata_base64— obligatorioidempotency_key— opcional
delete_run_case_step_result_attachment
Sección titulada «delete_run_case_step_result_attachment»Call this to permanently delete a committed run-case step result attachment. Requires run_ulid, run_case_ulid, step_ulid, and attachment_ulid. Rejects if the run is closed. Returns { deleted: true }.
Parámetros
run_ulid— obligatoriorun_case_ulid— obligatoriostep_ulid— obligatorioattachment_ulid— obligatorioidempotency_key— opcional
create_test_plan
Sección titulada «create_test_plan»Call this to create a new test plan inside a project. Requires project_id (the project code) and name. Optionally description and status (defaults to draft). Returns the created plan, including its ulid.
Parámetros
project_id— obligatorioname— obligatoriodescription— opcionalstatus— opcionalidempotency_key— opcional
list_test_plans
Sección titulada «list_test_plans»Call this to list test plans in a project with offset pagination. Requires project_id. Accepts page (1-based) and pageSize. Returns items plus page, pageSize, and total.
Parámetros
project_id— obligatoriopage— opcionalpageSize— opcional
get_test_plan
Sección titulada «get_test_plan»Call this to fetch a single test plan by its ulid. Requires plan_ulid.
Parámetros
plan_ulid— obligatorio
update_test_plan
Sección titulada «update_test_plan»Call this to update a test plan’s name, description, status, or milestoneId. Requires plan_ulid and at least one field to change.
Parámetros
plan_ulid— obligatorioname— opcionaldescription— opcionalstatus— opcionalmilestoneId— opcionalidempotency_key— opcional
delete_test_plan
Sección titulada «delete_test_plan»Call this to permanently delete a test plan. Requires plan_ulid. Returns { deleted: true }.
Parámetros
plan_ulid— obligatorioidempotency_key— opcional
replace_test_plan_cases
Sección titulada «replace_test_plan_cases»Call this to REPLACE a plan’s entire case selection with the given ordered list — this is DESTRUCTIVE: any case currently selected whose ulid is not in caseUlids is dropped. Duplicate ulids are rejected. Requires plan_ulid and caseUlids (0-5000; may be empty to clear the selection). Optionally caseAssignees. Returns the new selection as { items }.
Parámetros
plan_ulid— obligatoriocaseUlids— obligatoriocaseAssignees— opcionalidempotency_key— opcional
list_test_plan_cases
Sección titulada «list_test_plan_cases»Call this to list a plan’s selected cases (no paging — the full selection is returned). Requires plan_ulid.
Parámetros
plan_ulid— obligatorio
patch_test_plan_case
Sección titulada «patch_test_plan_case»Call this to change one selected case’s assignee within a plan (null clears it). Requires plan_ulid, plan_case_ulid, and assigneeUlid.
Parámetros
plan_ulid— obligatorioplan_case_ulid— obligatorioassigneeUlid— obligatorioidempotency_key— opcional
list_test_plan_runs
Sección titulada «list_test_plan_runs»Call this to list the runs linked to a plan, most-recent first (no paging — the full set is returned). Each item is a full run plus comboKey/comboLabel identifying its configuration combination (empty for a plain, unconfigured run). Requires plan_ulid. Create a run for a plan with create_run (planUlid + configurationUlids).
Parámetros
plan_ulid— obligatorio
replace_test_plan_configurations
Sección titulada «replace_test_plan_configurations»Call this to REPLACE a plan’s entire configuration-value selection (the axes of the generate-run matrix) with the given set — DESTRUCTIVE, duplicate ulids rejected. Requires plan_ulid and configurationUlids (may be empty to clear the matrix). Returns the new selection as { items }.
Parámetros
plan_ulid— obligatorioconfigurationUlids— obligatorioidempotency_key— opcional
list_test_plan_configurations
Sección titulada «list_test_plan_configurations»Call this to list a plan’s selected configuration values (no paging — the full selection is returned). Requires plan_ulid.
Parámetros
plan_ulid— obligatorio
set_test_plan_excluded_combinations
Sección titulada «set_test_plan_excluded_combinations»Call this to REPLACE a plan’s entire excluded-combination set, scoping which combinations the plan intends to cover — DESTRUCTIVE, duplicate keys rejected. Requires plan_ulid and comboKeys (may be empty to clear all exclusions; use get_test_plan_combinations to read each candidate combination’s comboKey). To actually create a run for a combination, call create_run with the plan’s planUlid and the combination’s configurationUlids. Returns { comboKeys }.
Parámetros
plan_ulid— obligatoriocomboKeys— obligatorioidempotency_key— opcional
get_test_plan_combinations
Sección titulada «get_test_plan_combinations»Call this to preview every candidate configuration combination for a plan, each with its comboKey, included flag (false when excluded), and ordered configuration values — plus includedCount/totalCount. Requires plan_ulid.
Parámetros
plan_ulid— obligatorio
create_milestone
Sección titulada «create_milestone»Call this to create a new milestone inside a project. Requires project_id (the project code) and name. Optionally description, status (defaults to upcoming), startAt/dueAt/forecastAt (epoch milliseconds; dueAt must be >= startAt when both are set), and parentId (an existing milestone in the same project — the hierarchy is strictly one level, a child cannot itself have children). Returns the created milestone, including its ulid.
Parámetros
project_id— obligatorioname— obligatoriodescription— opcionalstatus— opcionalstartAt— opcionaldueAt— opcionalforecastAt— opcionalparentId— opcionalidempotency_key— opcional
list_milestones
Sección titulada «list_milestones»Call this to list milestones in a project with offset pagination. Requires project_id. Accepts page (1-based), pageSize, q, status (comma-separated), and view (“flat” default, or “tree” — pages over parent milestones only, each carrying its live direct children nested one level deep). Returns items plus page, pageSize, and total either way.
Parámetros
project_id— obligatoriopage— opcionalpageSize— opcionalq— opcionalstatus— opcionalview— opcional
get_milestone
Sección titulada «get_milestone»Call this to fetch a single milestone by its ulid. Requires milestone_ulid.
Parámetros
milestone_ulid— obligatorio
update_milestone
Sección titulada «update_milestone»Call this to update a milestone’s name, description, status, startAt/dueAt/forecastAt, or parentId. Requires milestone_ulid and at least one field to change; dueAt must remain >= startAt when both are set.
Parámetros
milestone_ulid— obligatorioname— opcionaldescription— opcionalstatus— opcionalstartAt— opcionaldueAt— opcionalforecastAt— opcionalparentId— opcionalidempotency_key— opcional
delete_milestone
Sección titulada «delete_milestone»Call this to permanently delete a milestone. Requires milestone_ulid. Returns { deleted: true } on success.
Parámetros
milestone_ulid— obligatorioidempotency_key— opcional
create_environment
Sección titulada «create_environment»Call this to create a new environment inside a project. Requires project_id (the project code), name, and slug (lowercase alphanumeric segments joined by single hyphens, e.g. “pre-prod”). Optionally description, url, and isDefault (defaults to false). Returns the created environment, including its ulid.
Parámetros
project_id— obligatorioname— obligatorioslug— obligatoriodescription— opcionalurl— opcionalisDefault— opcionalidempotency_key— opcional
list_environments
Sección titulada «list_environments»Call this to list environments in a project with offset pagination. Requires project_id. Accepts page (1-based) and pageSize. Returns items plus page, pageSize, and total.
Parámetros
project_id— obligatoriopage— opcionalpageSize— opcional
get_environment
Sección titulada «get_environment»Call this to fetch a single environment by its ulid. Requires environment_ulid.
Parámetros
environment_ulid— obligatorio
update_environment
Sección titulada «update_environment»Call this to update an environment’s name, slug, description, url, or isDefault. Requires environment_ulid and at least one field to change.
Parámetros
environment_ulid— obligatorioname— opcionalslug— opcionaldescription— opcionalurl— opcionalisDefault— opcionalidempotency_key— opcional
delete_environment
Sección titulada «delete_environment»Call this to permanently delete an environment. Requires environment_ulid. Returns { deleted: true } on success.
Parámetros
environment_ulid— obligatorioidempotency_key— opcional
create_configuration_group
Sección titulada «create_configuration_group»Call this to create a new configuration group inside a project (e.g. “Browser”, “OS”). Requires project_id (the project code) and name. Rejects with a conflict if a group with the same name already exists in the project. Returns the created group, including its ulid.
Parámetros
project_id— obligatorioname— obligatorioidempotency_key— opcional
list_configuration_groups
Sección titulada «list_configuration_groups»Call this to list configuration groups in a project with offset pagination. Requires project_id. Accepts page (1-based), pageSize, and optional include=“values” to embed each group’s nested values in the response. Returns items plus page, pageSize, and total.
Parámetros
project_id— obligatoriopage— opcionalpageSize— opcionalinclude— opcional
get_configuration_group
Sección titulada «get_configuration_group»Call this to fetch a single configuration group by its ulid. Requires group_ulid. Optional include=“values” embeds the group’s nested values in the response.
Parámetros
group_ulid— obligatorioinclude— opcional
update_configuration_group
Sección titulada «update_configuration_group»Call this to rename a configuration group. Requires group_ulid and name. Rejects with a conflict if another group in the same project already has that name.
Parámetros
group_ulid— obligatorioname— opcionalidempotency_key— opcional
delete_configuration_group
Sección titulada «delete_configuration_group»Call this to delete a configuration group. Requires group_ulid. The group disappears from group-scoped reads; its nested values are NOT deleted and stay individually addressable via update_configuration and delete_configuration by their own configuration_ulid. Returns { deleted: true } on success.
Parámetros
group_ulid— obligatorioidempotency_key— opcional
create_configuration
Sección titulada «create_configuration»Call this to add a new configuration value under a group (e.g. “Chrome” under “Browser”). Requires group_ulid and name. Rejects with a conflict if a value with the same name already exists in the group. Returns the created value, including its ulid.
Parámetros
group_ulid— obligatorioname— obligatorioidempotency_key— opcional
list_configurations
Sección titulada «list_configurations»Call this to list every configuration value nested under a group. Requires group_ulid. The underlying route has no independent pagination — every live value is returned in one page.
Parámetros
group_ulid— obligatorio
update_configuration
Sección titulada «update_configuration»Call this to rename a configuration value standalone by its own ulid (not nested under a group path). Requires configuration_ulid and name. Rejects with a conflict if another value in the same group already has that name.
Parámetros
configuration_ulid— obligatorioname— opcionalidempotency_key— opcional
delete_configuration
Sección titulada «delete_configuration»Call this to permanently delete a configuration value by its ulid. Requires configuration_ulid. Returns { deleted: true } on success.
Parámetros
configuration_ulid— obligatorioidempotency_key— opcional
create_defect
Sección titulada «create_defect»Call this to report a new defect inside a project. Requires project_id (the project code) and title. Optionally description, assigneeUlid, tags, milestoneUlid, and customFieldValues (array of {fieldUlid, value}). Returns the created defect (status defaults to “open”), including its ulid and defectNumber.
Parámetros
project_id— obligatoriotitle— obligatoriodescription— opcionalassigneeUlid— opcionaltags— opcionalmilestoneUlid— opcionalcustomFieldValues— opcionalidempotency_key— opcional
list_defects
Sección titulada «list_defects»Call this to list defects in a project with offset pagination. Requires project_id. Accepts page (1-based), pageSize, q (matches “D-<n>“/a bare number as the defect number, otherwise a title substring), status/severity/priority/assigneeUlid (each an array, ANDed as one CSV filter), aging (an age-bucket key), milestoneUlid, fields (custom-field ulids to embed on each item), and cf (repeatable — pass the same argument more than once for several “<fieldUlid>:<value[,value…]>” filters at once, every entry ANDed together). Returns items plus page, pageSize, and total.
Parámetros
project_id— obligatoriopage— opcionalpageSize— opcionalq— opcionalstatus— opcionalseverity— opcionalpriority— opcionalassigneeUlid— opcionalaging— opcionalfields— opcionalmilestoneUlid— opcionalcf— opcional
get_defect_metrics
Sección titulada «get_defect_metrics»Call this to fetch project-scoped defect metrics: totalOpen, openBySeverity, aging buckets, reopenRate, mttrMs, byMilestone, and maxAgeDaysOpen. Requires project_id. The aggregate never includes another project’s defects.
Parámetros
project_id— obligatorio
get_defect
Sección titulada «get_defect»Call this to fetch a single defect by its ulid, including occurrence/affected-case counts and embedded custom-field values. Requires defect_ulid.
Parámetros
defect_ulid— obligatorio
update_defect
Sección titulada «update_defect»Call this to update a defect’s title, description, status, resolution, assigneeUlid, tags, milestoneUlid, or duplicateOfUlid. Requires defect_ulid and at least one field to change. status is a plain enum (open|in_progress|resolved|closed) validated against the transition graph server-side — there is no separate “resolve”/“reopen” tool. resolution is required when status becomes resolved or closed, and duplicateOfUlid is only allowed alongside resolution=“duplicate”.
Parámetros
defect_ulid— obligatoriotitle— opcionaldescription— opcionalstatus— opcionalresolution— opcionalassigneeUlid— opcionaltags— opcionalmilestoneUlid— opcionalduplicateOfUlid— opcionalidempotency_key— opcional
delete_defect
Sección titulada «delete_defect»Call this to permanently delete a defect. Requires defect_ulid. The route allow-lists owner, admin, AND member — only a viewer role is rejected as forbidden. Returns { deleted: true } on success.
Parámetros
defect_ulid— obligatorioidempotency_key— opcional
list_run_defects
Sección titulada «list_run_defects»Call this to list the defects linked within a run (no paging — the full set is returned, each item carrying linkCountInRun and systemFieldValues). Requires run_ulid.
Parámetros
run_ulid— obligatorio
link_defect_case
Sección titulada «link_defect_case»Call this to manually link a defect to a test case. Requires defect_ulid and testCaseUlid (must belong to the same project as the defect). Idempotent: re-linking the same pair returns the existing link and also clears any prior dismissal for that pair. Returns the created link, including its ulid.
Parámetros
defect_ulid— obligatoriotestCaseUlid— obligatorioidempotency_key— opcional
unlink_defect_case
Sección titulada «unlink_defect_case»Call this to remove a manual defect-case link. Requires defect_ulid and link_ulid (from link_defect_case). Returns { deleted: true } on success.
Parámetros
defect_ulid— obligatoriolink_ulid— obligatorioidempotency_key— opcional
dismiss_defect_case
Sección titulada «dismiss_defect_case»Call this to dismiss a defect-case association (hides the case from the defect’s affected-cases list without deleting any run history). Requires defect_ulid and testCaseUlid (must belong to the same project as the defect). Idempotent: re-dismissing the same pair refreshes the dismissal timestamp. Returns the dismissal record.
Parámetros
defect_ulid— obligatoriotestCaseUlid— obligatorioidempotency_key— opcional
link_defect_result
Sección titulada «link_defect_result»Call this to link a defect to a run result (one occurrence of the defect). Requires defect_ulid and resultUlid; optionally stepSnapshotUlid to pin the specific failing step. Idempotent: re-linking the same result returns the existing link. Returns the created link, including its ulid.
Parámetros
defect_ulid— obligatorioresultUlid— obligatoriostepSnapshotUlid— opcionalidempotency_key— opcional
list_defect_result_links
Sección titulada «list_defect_result_links»Call this to list the result links (occurrences) recorded on a defect, with cursor pagination. Requires defect_ulid. Accepts limit and cursor; feed the returned nextCursor back as cursor to fetch the next page — the field is absent once you have reached the last page.
Parámetros
defect_ulid— obligatoriolimit— opcionalcursor— opcional
unlink_defect_result
Sección titulada «unlink_defect_result»Call this to remove a defect-result link. Requires defect_ulid and link_ulid (from link_defect_result or list_defect_result_links). Returns { deleted: true } on success.
Parámetros
defect_ulid— obligatoriolink_ulid— obligatorioidempotency_key— opcional
list_defect_affected_cases
Sección titulada «list_defect_affected_cases»Call this to list the test cases affected by a defect (aggregated from result links and manual case links), with cursor pagination. Requires defect_ulid. Accepts limit and cursor; feed the returned nextCursor back as cursor to fetch the next page — the field is absent once you have reached the last page.
Parámetros
defect_ulid— obligatoriolimit— opcionalcursor— opcional
upload_defect_attachment
Sección titulada «upload_defect_attachment»Call this to upload ONE evidence file of ANY content type directly onto a defect (this is an immediate upload, not a stage-then-commit flow). Requires defect_ulid, filename, content_type, and data_base64 (the raw file bytes, base64-encoded). Decoded bytes must not exceed 33554432 bytes (32 MiB). Content type is not pre-checked here — an executable file type is rejected by the server after upload. Returns { attachments } with one persisted attachment reference.
Parámetros
defect_ulid— obligatoriofilename— obligatoriocontent_type— obligatoriodata_base64— obligatorioidempotency_key— opcional
list_defect_attachments
Sección titulada «list_defect_attachments»Call this to list every attachment persisted on a defect. Requires defect_ulid. Returns { attachments } — a bare passthrough, no pagination.
Parámetros
defect_ulid— obligatorio
delete_defect_attachment
Sección titulada «delete_defect_attachment»Call this to permanently delete a defect attachment. Requires defect_ulid and attachment_ulid. Returns { deleted: true }.
Parámetros
defect_ulid— obligatorioattachment_ulid— obligatorioidempotency_key— opcional
set_defect_custom_field_values
Sección titulada «set_defect_custom_field_values»Call this to reconcile a defect’s custom-field values to an EXACT desired set: values for fields not present in the input are cleared (or rejected if the field is required). Requires defect_ulid and values (an array of { fieldUlid, value }). Returns { customFieldValues } with the full resulting set.
Parámetros
defect_ulid— obligatoriovalues— obligatorioidempotency_key— opcional
patch_defect_custom_field_value
Sección titulada «patch_defect_custom_field_value»Call this to update ONE of a defect’s custom-field values, leaving every other value untouched. Requires defect_ulid, field_ulid, and value (an empty/null value clears the field, or is rejected if the field is required). Returns { customFieldValues } with the full resulting set.
Parámetros
defect_ulid— obligatoriofield_ulid— obligatoriovalue— opcionalidempotency_key— opcional
list_custom_fields
Sección titulada «list_custom_fields»Call this to list an organization’s custom-field definitions (system + custom) with offset pagination. Requires org_id (from get_current_organization). Accepts page, pageSize, q (title substring), entity/type/group (each an array, ANDed as one CSV filter). Returns items plus page, pageSize, and total.
Parámetros
org_id— obligatoriopage— opcionalpageSize— opcionalq— opcionalentity— opcionaltype— opcionalgroup— opcionallocales— opcional
create_custom_field
Sección titulada «create_custom_field»Call this to create a new custom-field definition in an organization. Requires org_id, title, and type. Optionally entity (test_case, test_run, or defect; defaults to test_case), placeholder, defaultValue, isRequired, allProjects, projectUlids, and options (required for select/radio types). Returns { field }.
Parámetros
org_id— obligatoriotitle— obligatoriotitleI18n— opcionalentity— opcionaltype— obligatorioplaceholder— opcionalplaceholderI18n— opcionaldefaultValue— opcionalisRequired— opcionalallProjects— opcionalprojectUlids— opcionaloptions— opcionalidempotency_key— opcional
update_custom_field
Sección titulada «update_custom_field»Call this to update one or more fields of an existing custom-field definition. Requires org_id, field_ulid, and at least one of title, entity, type, placeholder, defaultValue, isRequired, allProjects, projectUlids, or options. Returns { field }.
Parámetros
org_id— obligatoriofield_ulid— obligatoriotitle— opcionaltitleI18n— opcionalentity— opcionaltype— opcionalplaceholder— opcionalplaceholderI18n— opcionaldefaultValue— opcionalisRequired— opcionalallProjects— opcionalprojectUlids— opcionaloptions— opcionalidempotency_key— opcional
delete_custom_field
Sección titulada «delete_custom_field»Call this to permanently delete a custom-field definition. Requires org_id and field_ulid. Returns { deleted: true }.
Parámetros
org_id— obligatoriofield_ulid— obligatorioidempotency_key— opcional
reset_custom_field
Sección titulada «reset_custom_field»Call this to restore a system/default custom field to its original definition. Requires org_id and field_ulid. Returns { field }.
Parámetros
org_id— obligatoriofield_ulid— obligatorioidempotency_key— opcional
set_test_case_custom_field_values
Sección titulada «set_test_case_custom_field_values»Call this to reconcile a test case’s custom-field values to an EXACT desired set: values for fields not present in the input are cleared (or rejected if the field is required). Requires case_ulid and values (an array of { fieldUlid, value }). Returns { customFieldValues } with the full resulting set.
Parámetros
case_ulid— obligatoriovalues— obligatorioidempotency_key— opcional
patch_test_case_custom_field_value
Sección titulada «patch_test_case_custom_field_value»Call this to update ONE of a test case’s custom-field values, leaving every other value untouched. Requires case_ulid, field_ulid, and value (an empty/null value clears the field, or is rejected if the field is required). Returns { customFieldValues } with the full resulting set.
Parámetros
case_ulid— obligatoriofield_ulid— obligatoriovalue— opcionalidempotency_key— opcional
get_current_organization
Sección titulada «get_current_organization»Call this FIRST to discover the caller organization: returns the ulid and name of the organization bound to the caller’s API token. No arguments. Every org-scoped tool below (members, invitations) requires the returned ulid as org_id.
Parámetros: Esta herramienta no recibe parámetros.
list_org_members
Sección titulada «list_org_members»Call this to list an organization’s members with offset pagination. Requires org_id (from get_current_organization). Accepts page, pageSize, q (email/name substring), and role (one or more role slugs from this organization’s roles list, system or custom, ANDed as one CSV filter). Returns items plus page, pageSize, and total.
Parámetros
org_id— obligatoriopage— opcionalpageSize— opcionalq— opcionalrole— opcional
update_org_member_role
Sección titulada «update_org_member_role»Call this to change a member’s role. Requires org_id, user_ulid, and role — a role slug from this organization’s roles list (system or custom). Returns { member }.
Parámetros
org_id— obligatoriouser_ulid— obligatoriorole— obligatorioidempotency_key— opcional
remove_org_member
Sección titulada «remove_org_member»Call this to remove a member from the organization. Requires org_id and user_ulid. Returns { deleted: true }.
Parámetros
org_id— obligatoriouser_ulid— obligatorioidempotency_key— opcional
list_org_invitations
Sección titulada «list_org_invitations»Call this to list an organization’s invitations with offset pagination. Requires org_id. Accepts page, pageSize, q (email substring), status (array, ANDed as one CSV filter — pending|accepted|revoked|expired), and role (one or more role slugs from this organization’s roles list, system or custom, ANDed as one CSV filter). Returns items plus page, pageSize, and total.
Parámetros
org_id— obligatoriopage— opcionalpageSize— opcionalq— opcionalstatus— opcionalrole— opcional
create_invitation
Sección titulada «create_invitation»Call this to invite a new member by email. Requires org_id, email, and role — a role slug from this organization’s roles list (system or custom); owner cannot be invited. Optionally locale. Returns { ulid } of the created invitation.
Parámetros
org_id— obligatorioemail— obligatoriorole— obligatoriolocale— opcionalgrantAllPrivateProjects— opcionalidempotency_key— opcional
bulk_create_invitations
Sección titulada «bulk_create_invitations»Call this to invite up to 50 addresses at once with ONE shared role. Requires org_id, emails (1-50), and role — a role slug from this organization’s roles list (system or custom); owner cannot be invited. Optionally locale, applied to the WHOLE list (no per-address role or locale). Optionally grantAllPrivateProjects, applied to the WHOLE list: when true, each invitee is granted every private project of the organization once they accept. Returns { results: [{ email, status }] }, one entry per distinct submitted address, status one of created, duplicate_pending, already_member, invalid_email.
Parámetros
org_id— obligatorioemails— obligatoriorole— obligatoriograntAllPrivateProjects— opcionallocale— opcionalidempotency_key— opcional
resend_invitation
Sección titulada «resend_invitation»Call this to resend a pending invitation email. Requires org_id and invitation_ulid. Returns { ulid }.
Parámetros
org_id— obligatorioinvitation_ulid— obligatorioidempotency_key— opcional
revoke_invitation
Sección titulada «revoke_invitation»Call this to revoke a pending invitation. Requires org_id and invitation_ulid. Returns { deleted: true }.
Parámetros
org_id— obligatorioinvitation_ulid— obligatorioidempotency_key— opcional
list_audit_events
Sección titulada «list_audit_events»Call this to list an organization’s audit trail with cursor pagination. Requires org_id (from get_current_organization). Gated to owner/admin roles — any other role is rejected as forbidden. Accepts limit, cursor (feed the returned nextCursor back to fetch the next page), actorUlid, and entityType (a comma-separated string of one or more entity types, ANDed — e.g. “defect” or “defect,test_case”). Returns { events, nextCursor } — nextCursor is null on the last page.
Parámetros
org_id— obligatoriolimit— opcionalcursor— opcionalactorUlid— opcionalentityType— opcional
list_defect_audit_events
Sección titulada «list_defect_audit_events»Call this to list a defect’s audit trail with cursor pagination. Requires defect_ulid. Accepts limit and cursor (feed the returned nextCursor back to fetch the next page). Returns { events, nextCursor } — nextCursor is null on the last page.
Parámetros
defect_ulid— obligatoriolimit— opcionalcursor— opcional
list_run_audit_events
Sección titulada «list_run_audit_events»Call this to list a run’s audit trail with cursor pagination. Requires run_ulid. Accepts limit and cursor (feed the returned nextCursor back to fetch the next page). Returns { events, nextCursor } — nextCursor is null on the last page.
Parámetros
run_ulid— obligatoriolimit— opcionalcursor— opcional
stage_import
Sección titulada «stage_import»Call this FIRST to stage a suite/case tree file (e.g. CSV) for import. Requires project_id, filename, content_type, and data_base64 (the raw file bytes, base64-encoded). Decoded bytes must not exceed 10485760 bytes (10 MiB). Returns { uploadUlid, byteSize, filename } — pass uploadUlid to create_import to commit the tree.
Parámetros
project_id— obligatoriofilename— obligatoriocontent_type— obligatoriodata_base64— obligatorioidempotency_key— opcional
create_import
Sección titulada «create_import»Call this to commit a staged import into an atomic suite/case tree. Requires project_id, uploadUlid (from stage_import), sourceFormat, targetSuiteUlid (a suite ulid to import under, or null for the project root), and replaceMatching (whether same-titled existing cases are replaced instead of duplicated). Returns the import report: counts (suitesCreated, casesCreated, casesReplaced, rowsFailed), created, replaced, failures, and warnings.
Parámetros
project_id— obligatoriouploadUlid— obligatoriosourceFormat— obligatoriotargetSuiteUlid— obligatorioreplaceMatching— obligatorioidempotency_key— opcional
report_defect_from_result
Sección titulada «report_defect_from_result»Composite convenience tool: creates a defect, links it to a run result, and links it to one or more test cases — three SEPARATE sequential dispatched calls. Requires project_id, title, resultUlid, and testCaseUlids (at least one). Optionally description. This tool is NOT ATOMIC at the MCP layer: if a later step fails, earlier steps are NOT rolled back (e.g. the defect may already exist even though a case link 422s) — the failure result includes a partial-state JSON block (defect, and resultLink/caseLinks if those steps already succeeded); call get_defect or list_defect_affected_cases afterward to confirm the actual state, then retry the failed step with link_defect_case/link_defect_result directly. For an atomic run-result submission use bulk_submit_run_result instead. Returns { defect, resultLink, caseLinks }.
Parámetros
project_id— obligatoriotitle— obligatorioresultUlid— obligatoriotestCaseUlids— obligatoriodescription— opcionalidempotency_key— opcional
list_tags
Sección titulada «list_tags»Call this to list an organization’s tag catalog with offset pagination. Requires org_id (from get_current_organization). Accepts page, pageSize, q (name substring) and authorUlid (one or more member ULIDs, comma-separated). Each tag carries its author and its usage counts across test cases, defects and test runs; the counts cover only the projects the caller may read. Returns items plus page, pageSize, and total.
Parámetros
org_id— obligatoriopage— opcionalpageSize— opcionalq— opcionalauthorUlid— opcional
create_tag
Sección titulada «create_tag»Call this to add a tag to the organization catalog. Requires org_id and name. Names are trimmed and unique per organization; a duplicate is refused as a conflict. Returns the created tag, including its ulid and its three (zero) usage counts.
Parámetros
org_id— obligatorioname— obligatorioidempotency_key— opcional
update_tag
Sección titulada «update_tag»Call this to rename a tag. Requires org_id, tag_ulid and name. The rename reaches every test case, defect and test run the tag is attached to without changing any of them. Returns the renamed tag with its current usage counts.
Parámetros
org_id— obligatoriotag_ulid— obligatorioname— opcionalidempotency_key— opcional
delete_tag
Sección titulada «delete_tag»Call this to permanently delete a tag. Requires org_id and tag_ulid. Deleting a tag detaches it from every test case, defect and test run that carries it, leaving those otherwise intact. Returns { deleted: true }.
Parámetros
org_id— obligatoriotag_ulid— obligatorioidempotency_key— opcional
bulk_delete_tags
Sección titulada «bulk_delete_tags»Call this to delete several tags at once. Requires org_id and ulids (1-100 tag ULIDs). Each deletion detaches the tag from every test case, defect and test run that carries it. A ULID this organization does not own, or one already removed, is skipped rather than failing the request. Returns { deleted: <count actually removed> }.
Parámetros
org_id— obligatorioulids— obligatorioidempotency_key— opcional