get_blueprints
Retrieve product blueprints from Printify's print-on-demand platform using pagination. Specify the page number and limit to fetch structured data for efficient product management and design integration.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of blueprints per page | |
| page | No | Page number |
Implementation Reference
- The main handler function that executes the 'get_blueprints' tool logic. It validates the client, fetches blueprints from Printify API, formats the response in MCP format, and handles errors.export async function getBlueprints( printifyClient: PrintifyAPI, options: { page?: number; limit?: number; } = {} ) { try { // Validate client is initialized if (!printifyClient) { throw new Error('Printify API client is not initialized. The PRINTIFY_API_KEY environment variable may not be set.'); } // Set default options const page = options.page || 1; const limit = options.limit || 10; // Get blueprints const blueprints = await printifyClient.getBlueprints(); return { success: true, blueprints, response: { content: [{ type: "text", text: `Available blueprints (page ${page}, limit ${limit}):\n\n${JSON.stringify(blueprints, null, 2)}` }] } }; } catch (error: any) { console.error('Error getting blueprints:', error); return { success: false, error, errorResponse: formatErrorResponse( error, 'Get Blueprints', { Page: options.page, Limit: options.limit }, [ 'Check that your Printify API key is valid', 'Ensure your Printify account is properly connected' ] ) }; } }
- src/index.ts:425-456 (registration)Registers the 'get_blueprints' MCP tool on the server, defines the input schema using Zod (page and limit parameters), and provides the top-level handler that delegates to the service function.server.tool( "get_blueprints", { page: z.number().optional().default(1).describe("Page number"), limit: z.number().optional().default(10).describe("Number of blueprints per page") }, async ({ page, limit }): Promise<{ content: any[], isError?: boolean }> => { // Import the printify blueprints service const { getBlueprints } = await import('./services/printify-blueprints.js'); // Check if client is initialized if (!printifyClient) { return { content: [{ type: "text", text: "Printify API client is not initialized. The PRINTIFY_API_KEY environment variable may not be set." }], isError: true }; } // Call the service const result = await getBlueprints(printifyClient, { page, limit }); // Return the result if (result.success) { return result.response as { content: any[], isError?: boolean }; } else { return result.errorResponse as { content: any[], isError: boolean }; } } );
- src/printify-api.ts:405-413 (helper)Low-level helper method in PrintifyAPI class that calls the Printify SDK's catalog.listBlueprints() to fetch blueprints, used by the main handler.async getBlueprints() { try { // Use the catalog.listBlueprints method return await this.client.catalog.listBlueprints(); } catch (error) { console.error('Error fetching blueprints:', error); throw error; } }