create_profile
Create customer profiles in Klaviyo by entering email, phone number, external ID, first name, last name, and additional properties via the MCP server for targeted marketing automation.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| No | Email address of the profile | ||
| external_id | No | External ID for the profile | |
| first_name | No | First name of the profile | |
| last_name | No | Last name of the profile | |
| phone_number | No | Phone number of the profile | |
| properties | No | Additional properties for the profile |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"email": {
"description": "Email address of the profile",
"format": "email",
"type": "string"
},
"external_id": {
"description": "External ID for the profile",
"type": "string"
},
"first_name": {
"description": "First name of the profile",
"type": "string"
},
"last_name": {
"description": "Last name of the profile",
"type": "string"
},
"phone_number": {
"description": "Phone number of the profile",
"type": "string"
},
"properties": {
"additionalProperties": {},
"description": "Additional properties for the profile",
"type": "object"
}
},
"type": "object"
}
Implementation Reference
- src/tools/profiles.js:62-95 (handler)The handler function constructs profile attributes from input parameters, builds the Klaviyo API payload, calls klaviyoClient.post to create the profile, and returns the result or error.async (params) => { try { const attributes = {}; // Add all provided fields to attributes for (const [key, value] of Object.entries(params)) { if (value !== undefined && key !== 'properties') { attributes[key] = value; } } // Add properties if provided if (params.properties) { attributes.properties = params.properties; } const payload = { data: { type: "profile", attributes } }; const result = await klaviyoClient.post('/profiles/', payload); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error creating profile: ${error.message}` }], isError: true }; } },
- src/tools/profiles.js:54-61 (schema)Zod schema defining optional input parameters for creating a profile: email, phone_number, external_id, first_name, last_name, and properties.{ email: z.string().email().optional().describe("Email address of the profile"), phone_number: z.string().optional().describe("Phone number of the profile"), external_id: z.string().optional().describe("External ID for the profile"), first_name: z.string().optional().describe("First name of the profile"), last_name: z.string().optional().describe("Last name of the profile"), properties: z.record(z.any()).optional().describe("Additional properties for the profile") },
- src/tools/profiles.js:52-97 (registration)The server.tool call registers the 'create_profile' tool with schema, inline handler, and description.server.tool( "create_profile", { email: z.string().email().optional().describe("Email address of the profile"), phone_number: z.string().optional().describe("Phone number of the profile"), external_id: z.string().optional().describe("External ID for the profile"), first_name: z.string().optional().describe("First name of the profile"), last_name: z.string().optional().describe("Last name of the profile"), properties: z.record(z.any()).optional().describe("Additional properties for the profile") }, async (params) => { try { const attributes = {}; // Add all provided fields to attributes for (const [key, value] of Object.entries(params)) { if (value !== undefined && key !== 'properties') { attributes[key] = value; } } // Add properties if provided if (params.properties) { attributes.properties = params.properties; } const payload = { data: { type: "profile", attributes } }; const result = await klaviyoClient.post('/profiles/', payload); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error creating profile: ${error.message}` }], isError: true }; } }, { description: "Create a new profile in Klaviyo" } );