archiveFeatureFlag
Archive a feature flag to make it inactive in Bucketeer, providing a comment for audit trail compliance.
Instructions
Archive a feature flag (make it inactive)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the feature flag to archive | |
| environmentId | No | Environment ID (uses default if not provided) | |
| comment | Yes | Comment for the archive action (required for audit trail) |
Implementation Reference
- src/tools/archive-flag.ts:37-99 (handler)Executes the archiving logic: validates input with Zod schema, initializes BucketeerClient, sends updateFeature request with archived: true, logs actions, handles Zod and API errors, returns structured JSON response.handler: async (input: unknown) => { try { // Validate input const params = archiveFlagSchema.parse(input); logger.debug('Archiving feature flag', params); // Create API client const client = new BucketeerClient(config.bucketeerHost, config.bucketeerApiKey); // Prepare request - use UpdateFeatureRequest with archived=true const request: UpdateFeatureRequest = { id: params.id, comment: params.comment, environmentId: getEnvironmentId(params.environmentId), archived: true, }; // Make API call const response = await client.updateFeature(request); logger.info(`Successfully archived feature flag: ${params.id}`); return { content: [{ type: 'text', text: JSON.stringify({ success: true, message: `Feature flag '${params.id}' has been archived`, archivedId: params.id, feature: response.feature, }, null, 2), }], }; } catch (error) { logger.error('Failed to archive feature flag', error); if (error instanceof z.ZodError) { return { content: [{ type: 'text', text: JSON.stringify({ success: false, error: 'Invalid input parameters', details: error.errors, }, null, 2), }], isError: true, }; } return { content: [{ type: 'text', text: JSON.stringify({ success: false, error: error instanceof Error ? error.message : 'Unknown error', }, null, 2), }], isError: true, }; } },
- src/tools/archive-flag.ts:19-36 (schema)MCP tool input schema defining required 'id' and 'comment', optional 'environmentId'.inputSchema: { type: 'object' as const, properties: { id: { type: 'string', description: 'The ID of the feature flag to archive', }, environmentId: { type: 'string', description: 'Environment ID (uses default if not provided)', }, comment: { type: 'string', description: 'Comment for the archive action (required for audit trail)', }, }, required: ['id', 'comment'], },
- src/tools/index.ts:7-13 (registration)Registers the archiveFlagTool in the central tools array for MCP server.export const tools = [ listFlagsTool, createFlagTool, getFlagTool, updateFlagTool, archiveFlagTool, ];
- src/tools/archive-flag.ts:7-12 (schema)Zod schema used internally by the handler for runtime input validation.// Input schema for the archive-flag tool export const archiveFlagSchema = z.object({ id: z.string().min(1, 'Feature flag ID is required'), environmentId: z.string().optional(), comment: z.string().min(1, 'Comment is required for archiving'), });
- src/tools/index.ts:5-5 (registration)Import of the archiveFlagTool from its implementation file.import { archiveFlagTool } from './archive-flag.js';