get_webhooks
Retrieve and manage webhooks from Klaviyo's marketing platform using pagination controls to handle large datasets efficiently.
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": "get_webhooks"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | Number of webhooks per page (1-100) | |
| page_cursor | No | Cursor for pagination |
Implementation Reference
- src/tools/webhooks.js:12-24 (handler)The main handler function for the get_webhooks tool. It fetches webhooks via klaviyoClient.get with provided params and returns formatted JSON response or error.
async (params) => { try { const webhooks = await klaviyoClient.get('/webhooks/', params); return { content: [{ type: "text", text: JSON.stringify(webhooks, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error retrieving webhooks: ${error.message}` }], isError: true }; } }, - src/tools/webhooks.js:8-11 (schema)Zod input schema defining optional page_size (1-100) and page_cursor parameters for pagination.
{ page_size: z.number().min(1).max(100).optional().describe("Number of webhooks per page (1-100)"), page_cursor: z.string().optional().describe("Cursor for pagination") }, - src/tools/webhooks.js:6-26 (registration)Direct registration of the get_webhooks tool using server.tool, including schema, handler, and description.
server.tool( "get_webhooks", { page_size: z.number().min(1).max(100).optional().describe("Number of webhooks per page (1-100)"), page_cursor: z.string().optional().describe("Cursor for pagination") }, async (params) => { try { const webhooks = await klaviyoClient.get('/webhooks/', params); return { content: [{ type: "text", text: JSON.stringify(webhooks, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error retrieving webhooks: ${error.message}` }], isError: true }; } }, { description: "Get webhooks from Klaviyo" } ); - src/server.js:43-43 (registration)Top-level call to registerWebhookTools which includes the get_webhooks tool registration.
registerWebhookTools(server); - src/klaviyo-client.js:135-180 (helper)Generic HTTP GET helper used by the tool handler. Constructs query params for pagination (page[size], page[cursor]), applies caching, rate limiting, retries, and executes axios request.
export async function get(endpoint, params = {}, fallbackFn) { // Build the URL with query parameters according to Klaviyo API specs let url = endpoint; const queryParams = []; // Special handling for campaign endpoint - add required filter if missing if (endpoint === '/campaigns/' && !params.filter) { logger.debug('Adding default email filter for campaigns endpoint'); params.filter = "equals(messages.channel,'email')"; } // Handle filter parameter if provided if (params.filter) { queryParams.push(`filter=${encodeURIComponent(params.filter)}`); } // Handle include parameter if provided if (params.include) { queryParams.push(`include=${encodeURIComponent(params.include)}`); } // Handle page_size parameter if provided if (params.page_size) { queryParams.push(`page[size]=${params.page_size}`); } // Handle pagination cursor if provided if (params.page_cursor) { queryParams.push(`page[cursor]=${params.page_cursor}`); } // Add query parameters to URL if (queryParams.length > 0) { url = `${endpoint}?${queryParams.join('&')}`; } logger.debug(`Prepared GET request to: ${url}`); return executeWithRetry( () => client.get(url), 'GET', endpoint, params, fallbackFn ); }