request_profile_deletion
Remove customer profiles from the Klaviyo platform by specifying an email, phone number, or profile ID using this tool. Ensures compliance with data deletion requests.
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 |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"email": {
"description": "Email of the profile to delete",
"format": "email",
"type": "string"
},
"phone_number": {
"description": "Phone number of the profile to delete",
"type": "string"
},
"profile_id": {
"description": "ID of the profile to delete",
"type": "string"
}
},
"type": "object"
}
Implementation Reference
- src/tools/data-privacy.js:13-44 (handler)The handler function that constructs the payload for a data privacy deletion job and calls the Klaviyo API to submit it. Handles email, phone_number, or profile_id.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)Zod schema for the tool's input parameters: optional email, phone_number, or 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:4-47 (registration)Function that registers the 'request_profile_deletion' tool on the MCP server, including schema, handler, and description.export function registerDataPrivacyTools(server) { // Request profile deletion server.tool( "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)Top-level call to register the data privacy tools (including request_profile_deletion) on the main MCP server instance.registerDataPrivacyTools(server);