Skip to main content
Glama

get_campaigns

Retrieve and manage marketing campaigns from Klaviyo using filters, pagination, and results per page. Simplify campaign monitoring and organization.

Input Schema

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

Implementation Reference

  • The handler function for the 'get_campaigns' MCP tool. It constructs API parameters with an optional filter (defaulting to email campaigns), calls the Klaviyo client to fetch campaigns, stringifies the response as text content, or returns an error message.
    async (params) => { try { // Always include the required channel filter if not already provided const apiParams = { filter: params.filter || "equals(messages.channel,'email')" }; const campaigns = await klaviyoClient.get('/campaigns/', apiParams); return { content: [{ type: "text", text: JSON.stringify(campaigns, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error retrieving campaigns: ${error.message}` }], isError: true }; } },
  • Zod input schema for the 'get_campaigns' tool, defining an optional 'filter' string parameter for querying campaigns.
    { filter: z.string().optional().describe("Filter query for campaigns") },
  • Full registration of the 'get_campaigns' tool via server.tool(), including the tool name, input schema, handler function, and description within the registerCampaignTools function.
    // Get campaigns server.tool( "get_campaigns", { filter: z.string().optional().describe("Filter query for campaigns") }, async (params) => { try { // Always include the required channel filter if not already provided const apiParams = { filter: params.filter || "equals(messages.channel,'email')" }; const campaigns = await klaviyoClient.get('/campaigns/', apiParams); return { content: [{ type: "text", text: JSON.stringify(campaigns, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error retrieving campaigns: ${error.message}` }], isError: true }; } }, { description: "Get campaigns from Klaviyo" } );
  • The 'get' helper function from klaviyoClient used in the tool handler. Handles GET requests to Klaviyo API with query param building (including special default filter for /campaigns/), caching, rate limiting retries, error handling, and logging.
    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