Skip to main content
Glama

get_forms

Retrieve forms from the Klaviyo API using filters, page size, and pagination cursor to manage marketing automation workflows efficiently.

Input Schema

NameRequiredDescriptionDefault
filterNoFilter query for forms
page_cursorNoCursor for pagination
page_sizeNoNumber of forms per page (1-100)

Input Schema (JSON Schema)

{ "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "filter": { "description": "Filter query for forms", "type": "string" }, "page_cursor": { "description": "Cursor for pagination", "type": "string" }, "page_size": { "description": "Number of forms per page (1-100)", "maximum": 100, "minimum": 1, "type": "number" } }, "type": "object" }

Implementation Reference

  • The main handler function for the 'get_forms' tool. It calls klaviyoClient.get('/forms/', params) and returns the JSON stringified response or error message.
    async (params) => { try { const forms = await klaviyoClient.get('/forms/', params); return { content: [{ type: "text", text: JSON.stringify(forms, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error retrieving forms: ${error.message}` }], isError: true }; } },
  • Zod schema defining the input parameters for the 'get_forms' tool: filter, page_size, page_cursor.
    { filter: z.string().optional().describe("Filter query for forms"), page_size: z.number().min(1).max(100).optional().describe("Number of forms per page (1-100)"), page_cursor: z.string().optional().describe("Cursor for pagination") },
  • Registers the 'get_forms' tool on the MCP server using server.tool with name, schema, handler, and description.
    server.tool( "get_forms", { filter: z.string().optional().describe("Filter query for forms"), page_size: z.number().min(1).max(100).optional().describe("Number of forms per page (1-100)"), page_cursor: z.string().optional().describe("Cursor for pagination") }, async (params) => { try { const forms = await klaviyoClient.get('/forms/', params); return { content: [{ type: "text", text: JSON.stringify(forms, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error retrieving forms: ${error.message}` }], isError: true }; } }, { description: "Get forms from Klaviyo" } );
  • src/server.js:46-46 (registration)
    Invokes registerFormTools(server) to register all form-related tools including 'get_forms'.
    registerFormTools(server);
  • The generic 'get' function in klaviyoClient that performs authenticated API GET requests to Klaviyo with retry logic, caching, and error handling. Called by the tool handler.
    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