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”). 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— 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
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 (at least one) 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— 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— 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 (may be empty); 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.
Parámetros
run_ulid— obligatoriorun_case_ulid— obligatoriostep_ulid— obligatoriostatus— obligatorioidempotency_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). Returns { actualResult }.
Parámetros
run_ulid— obligatoriorun_case_ulid— obligatoriostep_ulid— obligatorioactualResult— opcionalattachments— 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 one or more cases to a run (additive — existing cases are untouched). Requires run_ulid and caseUlids (at least one).
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 (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— 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— obligatorioentity— opcionaltype— obligatorioplaceholder— 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— opcionalentity— opcionaltype— opcionalplaceholder— 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 (an array, ANDed as one CSV filter — owner/admin/member/viewer). 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 (owner|admin|member|viewer). 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 (array, 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 (admin|member|viewer). Optionally locale. Returns { ulid } of the created invitation.
Parámetros
org_id— obligatorioemail— obligatoriorole— obligatoriolocale— 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