diff --git a/src/tools/events.ts b/src/tools/events.ts index 4c6310a..49e746f 100644 --- a/src/tools/events.ts +++ b/src/tools/events.ts @@ -247,6 +247,55 @@ export async function handleCreateEvent(context: ToolContext, args: any): Promis }; } +// ============================================================================ +// DELETE_EVENTS TOOL +// ============================================================================ + +export const deleteEventsToolDefinition = { + name: 'events_delete', + description: 'Delete events and all their data from the application. WARNING: This action is irreversible!', + inputSchema: { + type: 'object', + properties: { + app_id: { type: 'string', description: 'Application ID (optional if app_name is provided)' }, + app_name: { type: 'string', description: 'Application name (alternative to app_id)' }, + events: { + type: 'array', + items: { type: 'string' }, + description: 'Array of event keys to delete (e.g., ["wallet_connection_failed"])' + }, + }, + required: ['events'], + }, +}; + +export async function handleDeleteEvents(context: ToolContext, args: any): Promise { + const app_id = await context.resolveAppId(args); + const { events } = args; + + if (!events || !Array.isArray(events) || events.length === 0) { + throw new Error('events parameter must be a non-empty array of event keys'); + } + + const params = { + ...context.getAuthParams(), + app_id, + events: JSON.stringify(events), + }; + + const response = await safeApiCall( + () => context.httpClient.get('/i/events/delete_events', { params }), + 'Failed to delete events' + ); + + return { + content: [{ + type: 'text', + text: `Successfully deleted events: ${events.join(', ')}\nApp ID: ${app_id}\nResponse: ${JSON.stringify(response.data, null, 2)}`, + }], + }; +} + // ============================================================================ // EXPORTS // ============================================================================ @@ -254,11 +303,13 @@ export async function handleCreateEvent(context: ToolContext, args: any): Promis export const eventsToolDefinitions = [ createEventToolDefinition, getEventsAndSegmentsToolDefinition, + deleteEventsToolDefinition, ]; export const eventsToolHandlers = { 'events_create': 'createEvent', 'events_list': 'getEventsAndSegments', + 'events_delete': 'deleteEvents', } as const; export class EventsTools { @@ -271,6 +322,10 @@ export class EventsTools { async getEventsAndSegments(args: any): Promise { return handleGetEventsAndSegments(this.context, args); } + + async deleteEvents(args: any): Promise { + return handleDeleteEvents(this.context, args); + } } // Metadata for dynamic routing (must be after class declaration)