get_printify_status
Retrieve the current operational status of Printify services. Monitor service health, check for outages or maintenance, and ensure your print-on-demand workflow runs smoothly.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/index.ts:87-115 (registration)Registration of the 'get_printify_status' tool via server.tool() with empty schema {}, handler imports getPrintifyStatus from printify-shops service and calls it with the printifyClient.
server.tool( "get_printify_status", {}, async ({}): Promise<{ content: any[], isError?: boolean }> => { // Import the printify shops service const { getPrintifyStatus } = await import('./services/printify-shops.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 getPrintifyStatus(printifyClient); // Return the result if (result.success) { return result.response as { content: any[], isError?: boolean }; } else { return result.errorResponse as { content: any[], isError: boolean }; } } ); - src/services/printify-shops.ts:10-52 (handler)The actual handler function getPrintifyStatus that calls PrintifyAPI.getShops() and getCurrentShop(), returning a formatted status response with shop count and current shop info.
export async function getPrintifyStatus(printifyClient: PrintifyAPI) { 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 shops and current shop const shops = await printifyClient.getShops(); const currentShop = printifyClient.getCurrentShop(); return { success: true, shops, currentShop, response: { content: [{ type: "text", text: `Printify API Status:\n\n` + `Connected: Yes\n` + `Available Shops: ${shops.length}\n` + `Current Shop: ${currentShop ? `${currentShop.title} (ID: ${currentShop.id})` : 'None'}` }] } }; } catch (error: any) { console.error('Error getting Printify status:', error); return { success: false, error, errorResponse: formatErrorResponse( error, 'Get Printify Status', {}, [ 'Check that your Printify API key is valid', 'Ensure your Printify account is properly connected' ] ) }; } } - src/services/printify-shops.ts:4-5 (helper)Imports PrintifyAPI type and formatErrorResponse/formatSuccessResponse helpers used by the handler.
import { PrintifyAPI } from '../printify-api.js'; import { formatErrorResponse, formatSuccessResponse } from '../utils/error-handler.js'; - src/utils/error-handler.ts:8-75 (helper)formatErrorResponse utility used by getPrintifyStatus when an error occurs.
export function formatErrorResponse( error: any, step: string, context: Record<string, any> = {}, tips: string[] = [] ) { // Get error details const errorType = error.constructor.name; const errorMessage = error.message || 'Unknown error'; const errorStack = error.stack ? error.stack.split('\n').slice(0, 3).join('\n') : 'Not available'; // Format the error message let text = `ā **Error in ${step}**\n\n`; // Add context information Object.entries(context).forEach(([key, value]) => { if (typeof value === 'string' && value.includes('"')) { text += `- **${key}**: ${value}\n`; } else if (typeof value === 'object') { text += `- **${key}**: ${JSON.stringify(value)}\n`; } else { text += `- **${key}**: "${value}"\n`; } }); text += `- **Error**: ${errorMessage}\n\n`; // Add detailed diagnostic information text += `=== DETAILED DIAGNOSTIC INFORMATION ===\n\n`; text += `- **Error Type**: ${errorType}\n`; text += `- **Error Stack**: ${errorStack}\n`; // Add additional context details Object.entries(context).forEach(([key, value]) => { if (key !== 'Prompt' && key !== 'Model' && key !== 'Error') { if (typeof value === 'object' && value !== null) { text += `- **${key}**: ${JSON.stringify(value, null, 2)}\n`; } else if (value !== undefined && value !== null) { text += `- **${key}**: ${value}\n`; } } }); // Add system information text += `- **Current Working Directory**: ${process.cwd()}\n`; text += `- **Node.js Version**: ${process.version}\n`; text += `- **Platform**: ${process.platform}\n\n`; // Add API response data if available if (error.response) { text += `- **API Response Status**: ${error.response.status}\n`; text += `- **API Response Data**: ${JSON.stringify(error.response.data, null, 2)}\n\n`; } // Add tips if provided if (tips.length > 0) { text += `\nš Please try again with a different prompt or parameters.\n\n`; text += 'š” **Tips**:\n'; tips.forEach(tip => { text += `⢠${tip}\n`; }); } return { content: [{ type: "text", text }], isError: true }; }