Skip to main content
Glama

get_product_review

Retrieve detailed product review data from the Klaviyo MCP Server by specifying the review ID, enabling insights into customer feedback for marketing analysis.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesID of the product review to retrieve

Implementation Reference

  • Handler function that fetches the specific product review by ID using klaviyoClient.get and returns JSON-formatted response or error.
    async (params) => { try { const review = await klaviyoClient.get(`/product-reviews/${params.id}/`); return { content: [{ type: "text", text: JSON.stringify(review, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error retrieving product review: ${error.message}` }], isError: true }; }
  • Input schema defining the required 'id' parameter as a string.
    { id: z.string().describe("ID of the product review to retrieve") },
  • Registration of the 'get_product_review' tool via server.tool, including schema, handler, and description.
    server.tool( "get_product_review", { id: z.string().describe("ID of the product review to retrieve") }, async (params) => { try { const review = await klaviyoClient.get(`/product-reviews/${params.id}/`); return { content: [{ type: "text", text: JSON.stringify(review, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error retrieving product review: ${error.message}` }], isError: true }; } }, { description: "Get a specific product review from Klaviyo" } );
  • Supporting 'get' function in klaviyoClient that performs the HTTP GET request to Klaviyo API with caching, rate limiting, retries, and query param handling.
    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