Skip to main content
Glama

get_lists

Retrieve and paginate customer lists from Klaviyo using filter queries and page cursors. Manage marketing lists efficiently with customizable page sizes (1-100) to suit your needs.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filterNoFilter query for lists
page_cursorNoCursor for pagination
page_sizeNoNumber of lists per page (1-100)

Implementation Reference

  • The async handler function that implements the core logic of the 'get_lists' tool. It calls the Klaviyo API via klaviyoClient.get to retrieve lists based on provided parameters and returns formatted JSON response or error.
    async (params) => { try { const lists = await klaviyoClient.get('/lists/', params); return { content: [{ type: "text", text: JSON.stringify(lists, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error retrieving lists: ${error.message}` }], isError: true }; } },
  • Zod schema defining the input parameters for the 'get_lists' tool: optional filter, page_size (1-100), and page_cursor for pagination.
    { filter: z.string().optional().describe("Filter query for lists"), page_size: z.number().min(1).max(100).optional().describe("Number of lists per page (1-100)"), page_cursor: z.string().optional().describe("Cursor for pagination") },
  • The server.tool call that registers the 'get_lists' tool, including its schema, handler, and description.
    server.tool( "get_lists", { filter: z.string().optional().describe("Filter query for lists"), page_size: z.number().min(1).max(100).optional().describe("Number of lists per page (1-100)"), page_cursor: z.string().optional().describe("Cursor for pagination") }, async (params) => { try { const lists = await klaviyoClient.get('/lists/', params); return { content: [{ type: "text", text: JSON.stringify(lists, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error retrieving lists: ${error.message}` }], isError: true }; } }, { description: "Get lists from Klaviyo" } );
  • src/server.js:33-33 (registration)
    Invocation of registerListTools which registers the 'get_lists' tool (among others) on the main MCP server.
    registerListTools(server);
  • The generic 'get' helper function from klaviyoClient used by the get_lists handler to perform the actual API request to '/lists/' with parameters, including retry logic, caching, and rate limiting.
    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 ); }

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