Skip to main content
Glama

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

NameRequiredDescriptionDefault
emailNoEmail address of the profile
external_idNoExternal ID for the profile
first_nameNoFirst name of the profile
last_nameNoLast name of the profile
phone_numberNoPhone number of the profile
propertiesNoAdditional 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

  • 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 }; } },
  • 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") },
  • 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" } );

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ivan-rivera-projects/Klaviyo-MCP-Server-Enhanced'

If you have feedback or need assistance with the MCP directory API, please join our Discord server