get_metrics
Retrieve marketing metrics from Klaviyo to analyze campaign performance, track customer engagement, and monitor key marketing indicators using filter queries and pagination.
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_metrics"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter query for metrics | |
| page_size | No | Number of metrics per page (1-100) | |
| page_cursor | No | Cursor for pagination |
Implementation Reference
- src/tools/metrics.js:13-25 (handler)The handler function that implements the core logic of the 'get_metrics' tool by calling the Klaviyo API via klaviyoClient.get and formatting the response as MCP content or error.
async (params) => { try { const metrics = await klaviyoClient.get('/metrics/', params); return { content: [{ type: "text", text: JSON.stringify(metrics, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error retrieving metrics: ${error.message}` }], isError: true }; } }, - src/tools/metrics.js:8-12 (schema)Zod schema defining the input parameters for the 'get_metrics' tool: optional filter, page_size (1-100), and page_cursor.
{ filter: z.string().optional().describe("Filter query for metrics"), page_size: z.number().min(1).max(100).optional().describe("Number of metrics per page (1-100)"), page_cursor: z.string().optional().describe("Cursor for pagination") }, - src/tools/metrics.js:6-27 (registration)The server.tool call that registers the 'get_metrics' tool, including its name, input schema, handler function, and description.
server.tool( "get_metrics", { filter: z.string().optional().describe("Filter query for metrics"), page_size: z.number().min(1).max(100).optional().describe("Number of metrics per page (1-100)"), page_cursor: z.string().optional().describe("Cursor for pagination") }, async (params) => { try { const metrics = await klaviyoClient.get('/metrics/', params); return { content: [{ type: "text", text: JSON.stringify(metrics, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error retrieving metrics: ${error.message}` }], isError: true }; } }, { description: "Get metrics from Klaviyo" } ); - src/server.js:36-36 (registration)Invocation of registerMetricTools which registers the 'get_metrics' tool (among others) on the main MCP server instance.
registerMetricTools(server);