create_webhook
Set up a webhook on the Klaviyo MCP Server by specifying a URL endpoint and events to subscribe to, enabling automated real-time data updates.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint | Yes | URL endpoint for the webhook | |
| events | Yes | Events to subscribe to | |
| profile_id | No | Profile ID for authentication |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"endpoint": {
"description": "URL endpoint for the webhook",
"format": "uri",
"type": "string"
},
"events": {
"description": "Events to subscribe to",
"items": {
"type": "string"
},
"type": "array"
},
"profile_id": {
"description": "Profile ID for authentication",
"type": "string"
}
},
"required": [
"endpoint",
"events"
],
"type": "object"
}
Implementation Reference
- src/tools/webhooks.js:36-70 (handler)Handler function that constructs the webhook payload and calls the Klaviyo API to create the webhook.async (params) => { try { const payload = { data: { type: "webhook", attributes: { endpoint: params.endpoint, events: params.events } } }; if (params.profile_id) { payload.data.relationships = { profile: { data: { type: "profile", id: params.profile_id } } }; } const result = await klaviyoClient.post('/webhooks/', payload); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error creating webhook: ${error.message}` }], isError: true }; } }, { description: "Create a new webhook in Klaviyo" }
- src/tools/webhooks.js:31-35 (schema)Zod input schema defining parameters for the create_webhook tool: endpoint, events, and optional profile_id.{ endpoint: z.string().url().describe("URL endpoint for the webhook"), events: z.array(z.string()).describe("Events to subscribe to"), profile_id: z.string().optional().describe("Profile ID for authentication") },
- src/tools/webhooks.js:29-71 (registration)Registration of the create_webhook tool via server.tool, including name, schema, handler, and description.server.tool( "create_webhook", { endpoint: z.string().url().describe("URL endpoint for the webhook"), events: z.array(z.string()).describe("Events to subscribe to"), profile_id: z.string().optional().describe("Profile ID for authentication") }, async (params) => { try { const payload = { data: { type: "webhook", attributes: { endpoint: params.endpoint, events: params.events } } }; if (params.profile_id) { payload.data.relationships = { profile: { data: { type: "profile", id: params.profile_id } } }; } const result = await klaviyoClient.post('/webhooks/', payload); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error creating webhook: ${error.message}` }], isError: true }; } }, { description: "Create a new webhook in Klaviyo" } );
- src/server.js:43-43 (registration)Top-level call to registerWebhookTools, which includes registration of create_webhook.registerWebhookTools(server);