Skip to main content
Glama

get_template

Retrieve a specific email or SMS template from Klaviyo by providing its unique ID to access and use in marketing campaigns.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesID of the template to retrieve

Implementation Reference

  • The main execution logic for the get_template tool: fetches template by ID via klaviyoClient.get and returns JSON or error response.
    async (params) => { try { const template = await klaviyoClient.get(`/templates/${params.id}/`); return { content: [{ type: "text", text: JSON.stringify(template, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error retrieving template: ${error.message}` }], isError: true }; } },
  • Zod input schema defining the required 'id' parameter as a string.
    { id: z.string().describe("ID of the template to retrieve") },
  • Direct registration of the 'get_template' tool using server.tool, including name, schema, handler, and description.
    "get_template", { id: z.string().describe("ID of the template to retrieve") }, async (params) => { try { const template = await klaviyoClient.get(`/templates/${params.id}/`); return { content: [{ type: "text", text: JSON.stringify(template, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error retrieving template: ${error.message}` }], isError: true }; } }, { description: "Get a specific template from Klaviyo" } );
  • src/server.js:40-40 (registration)
    High-level registration call to registerTemplateTools which includes the get_template tool registration.
    registerTemplateTools(server);
  • The klaviyoClient.get() helper function called by the handler, handling URL building, caching, rate limiting retries, and error handling for Klaviyo API GET requests.
    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