Skip to main content
Glama

get_variants

Retrieve product variant details by specifying a blueprint ID and print provider ID to access available options for customization and ordering on Printify's print-on-demand platform.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
blueprintIdYesBlueprint ID
printProviderIdYesPrint provider ID

Implementation Reference

  • The main handler function that fetches variants using the Printify API client, handles errors, and formats the MCP-compatible response.
    export async function getVariants(
      printifyClient: PrintifyAPI,
      blueprintId: string,
      printProviderId: string
    ) {
      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.');
        }
        
        // Get variants
        const variants = await printifyClient.getVariants(blueprintId, printProviderId);
        
        return {
          success: true,
          variants,
          response: {
            content: [{
              type: "text",
              text: `Variants for blueprint ID ${blueprintId} and print provider ID ${printProviderId}:\n\n${JSON.stringify(variants, null, 2)}`
            }]
          }
        };
      } catch (error: any) {
        console.error('Error getting variants:', error);
        
        return {
          success: false,
          error,
          errorResponse: formatErrorResponse(
            error,
            'Get Variants',
            {
              BlueprintId: blueprintId,
              PrintProviderId: printProviderId
            },
            [
              'Check that the blueprint ID is valid',
              'Check that the print provider ID is valid',
              'Check that your Printify API key is valid',
              'Ensure your Printify account is properly connected'
            ]
          )
        };
      }
    }
  • src/index.ts:524-556 (registration)
    MCP server.tool registration for 'get_variants' including input schema (Zod) and thin wrapper handler that calls the main service handler.
    // Get variants tool
    server.tool(
      "get_variants",
      {
        blueprintId: z.string().describe("Blueprint ID"),
        printProviderId: z.string().describe("Print provider ID")
      },
      async ({ blueprintId, printProviderId }): Promise<{ content: any[], isError?: boolean }> => {
        // Import the printify blueprints service
        const { getVariants } = 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 getVariants(printifyClient, blueprintId, printProviderId);
    
        // Return the result
        if (result.success) {
          return result.response as { content: any[], isError?: boolean };
        } else {
          return result.errorResponse as { content: any[], isError: boolean };
        }
      }
    );
  • Helper method in PrintifyAPI class that wraps the Printify SDK call to retrieve blueprint variants for a specific print provider.
    async getVariants(blueprintId: string, printProviderId: string) {
      try {
        // Use the catalog.getBlueprintVariants method
        return await this.client.catalog.getBlueprintVariants(blueprintId, printProviderId);
      } catch (error) {
        console.error(`Error fetching variants for blueprint ${blueprintId} and print provider ${printProviderId}:`, error);
        throw error;
      }
    }

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/TSavo/printify-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server