request_profile_deletion
Remove customer profiles from Klaviyo by providing email, phone number, or profile ID to comply with data privacy regulations and manage marketing lists.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| No | Email of the profile to delete | ||
| phone_number | No | Phone number of the profile to delete | |
| profile_id | No | ID of the profile to delete |
Implementation Reference
- src/tools/data-privacy.js:13-44 (handler)Handler function that processes the deletion request by building a payload from input params and posting to Klaviyo's data-privacy-deletion-jobs endpoint, returning the result or error.async (params) => { try { const payload = { data: { type: "data-privacy-deletion-job", attributes: {} } }; if (params.email) { payload.data.attributes.email = params.email; } if (params.phone_number) { payload.data.attributes.phone_number = params.phone_number; } if (params.profile_id) { payload.data.attributes.profile_id = params.profile_id; } const result = await klaviyoClient.post('/data-privacy-deletion-jobs/', payload); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error requesting profile deletion: ${error.message}` }], isError: true }; } },
- src/tools/data-privacy.js:8-12 (schema)Input schema using Zod for optional parameters: email, phone_number, profile_id.{ email: z.string().email().optional().describe("Email of the profile to delete"), phone_number: z.string().optional().describe("Phone number of the profile to delete"), profile_id: z.string().optional().describe("ID of the profile to delete") },
- src/tools/data-privacy.js:7-46 (registration)Direct registration of the 'request_profile_deletion' tool via server.tool(), specifying schema, handler, and description."request_profile_deletion", { email: z.string().email().optional().describe("Email of the profile to delete"), phone_number: z.string().optional().describe("Phone number of the profile to delete"), profile_id: z.string().optional().describe("ID of the profile to delete") }, async (params) => { try { const payload = { data: { type: "data-privacy-deletion-job", attributes: {} } }; if (params.email) { payload.data.attributes.email = params.email; } if (params.phone_number) { payload.data.attributes.phone_number = params.phone_number; } if (params.profile_id) { payload.data.attributes.profile_id = params.profile_id; } const result = await klaviyoClient.post('/data-privacy-deletion-jobs/', payload); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error requesting profile deletion: ${error.message}` }], isError: true }; } }, { description: "Request deletion of a profile for data privacy compliance" } );
- src/server.js:44-44 (registration)Invocation of registerDataPrivacyTools on the main MCP server, which registers the request_profile_deletion tool among others.registerDataPrivacyTools(server);