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.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "request_profile_deletion"
}
}Input 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);