Delete Test Suite
delete_test_suiteDisable a test suite to hide it from default list queries without permanent removal. Accepts suite UUID or name with project identifier.
Instructions
Disable (soft-delete) a test suite. The suite and its tests are hidden from default list queries but not permanently removed. Accepts suiteUuid directly, or suiteName + project identifier for name-based lookup. Returns {deleted: true, suiteUuid}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| suiteUuid | No | Test suite UUID. Provide suiteUuid OR (suiteName + project identifier). | |
| suiteName | No | Test suite name (case-insensitive exact match). Requires projectUuid or projectName. | |
| projectUuid | No | Project UUID. Provide projectUuid OR projectName. | |
| projectName | No | Project name (case-insensitive exact match). Provide projectUuid OR projectName. |
Implementation Reference
- handlers/deleteTestSuiteHandler.ts:14-44 (handler)Main handler for delete_test_suite tool. Accepts DeleteTestSuiteInput, resolves project/suite by name or UUID, and calls client.disableTestSuite() to soft-delete the suite. Returns {deleted: true, suiteUuid} on success.
export async function deleteTestSuiteHandler( input: DeleteTestSuiteInput, _context: ToolContext, ): Promise<ToolResponse> { const start = Date.now(); logger.toolStart('delete_test_suite', input); try { const client = new DebuggAIServerClient(config.api.key); await client.init(); let suiteUuid = input.suiteUuid; if (!suiteUuid) { let projectUuid = input.projectUuid; if (!projectUuid) { const resolved = await resolveProject(client, input.projectName!); if ('error' in resolved) return errorResp(resolved.error, resolved.message, { candidates: (resolved as any).candidates }); projectUuid = resolved.uuid; } const resolved = await resolveTestSuite(client, input.suiteName!, projectUuid); if ('error' in resolved) return errorResp(resolved.error, resolved.message, { candidates: (resolved as any).candidates }); suiteUuid = resolved.uuid; } await client.disableTestSuite(suiteUuid); logger.toolComplete('delete_test_suite', Date.now() - start); return { content: [{ type: 'text', text: JSON.stringify({ deleted: true, suiteUuid }, null, 2) }] }; } catch (error) { logger.toolError('delete_test_suite', error as Error, Date.now() - start); throw handleExternalServiceError(error, 'DebuggAI', 'delete_test_suite'); } } - types/index.ts:376-381 (schema)Zod schema DeleteTestSuiteInputSchema — combines suiteIdentifier (suiteUuid?, suiteName?) and projectIdentifier (projectUuid?, projectName?) and validates with .strict(). Also exports type DeleteTestSuiteInput.
export const DeleteTestSuiteInputSchema = z.object({ ...suiteIdentifier, ...projectIdentifier, }).strict(); export type DeleteTestSuiteInput = z.infer<typeof DeleteTestSuiteInputSchema>; - types/index.ts:354-357 (schema)Suite identifier partial schema used by delete_test_suite and other suite tools: suiteUuid (optional UUID) and suiteName (optional string min 1).
const suiteIdentifier = { suiteUuid: z.string().uuid().optional(), suiteName: z.string().min(1).optional(), }; - tools/testSuiteTools.ts:80-100 (registration)Tool definition buildDeleteTestSuiteTool() builds the Tool object with name 'delete_test_suite', title, description, and inputSchema. buildValidatedDeleteTestSuiteTool() wraps it with the Zod schema and handler.
// ── delete_test_suite ───────────────────────────────────────────────────────── export function buildDeleteTestSuiteTool(): Tool { return { name: 'delete_test_suite', title: 'Delete Test Suite', description: 'Disable (soft-delete) a test suite. The suite and its tests are hidden from default list queries but not permanently removed. Accepts suiteUuid directly, or suiteName + project identifier for name-based lookup. Returns {deleted: true, suiteUuid}.', inputSchema: { type: 'object', properties: { ...SUITE_PROPS, ...PROJECT_PROPS, }, additionalProperties: false, }, }; } export function buildValidatedDeleteTestSuiteTool(): ValidatedTool { return { ...buildDeleteTestSuiteTool(), inputSchema: DeleteTestSuiteInputSchema, handler: deleteTestSuiteHandler }; } - tools/index.ts:50-96 (registration)Tool registration in the main tools array (line 50) and validated tools array (line 72) which are used to initialize the server's tool registry.
buildDeleteTestSuiteTool(), buildCreateTestCaseTool(), buildUpdateTestCaseTool(), buildDeleteTestCaseTool(), buildRunTestSuiteTool(), buildGetTestSuiteResultsTool(), ]; const validated: ValidatedTool[] = [ buildValidatedTestPageChangesTool(ctx), buildValidatedTriggerCrawlTool(ctx), buildValidatedProbePageTool(), buildValidatedSearchProjectsTool(), buildValidatedSearchEnvironmentsTool(), buildValidatedCreateEnvironmentTool(), buildValidatedUpdateEnvironmentTool(), buildValidatedDeleteEnvironmentTool(), buildValidatedUpdateProjectTool(), buildValidatedDeleteProjectTool(), buildValidatedSearchExecutionsTool(), buildValidatedCreateProjectTool(), buildValidatedCreateTestSuiteTool(), buildValidatedSearchTestSuitesTool(), buildValidatedDeleteTestSuiteTool(), buildValidatedCreateTestCaseTool(), buildValidatedUpdateTestCaseTool(), buildValidatedDeleteTestCaseTool(), buildValidatedRunTestSuiteTool(), buildValidatedGetTestSuiteResultsTool(), ]; _tools = tools; _validatedTools = validated; toolRegistry.clear(); for (const v of validated) toolRegistry.set(v.name, v); } export function getTools(): Tool[] { if (!_tools) initTools(null); return _tools!; } export function getTool(name: string): ValidatedTool | undefined { if (!_validatedTools) initTools(null); return toolRegistry.get(name); }