Skip to main content
Glama

set_default

Configure default settings for options like 'model', 'aspectRatio', or 'raw' in the Printify MCP Server to streamline AI-driven product creation and design workflows.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
optionYesThe option name to set (e.g., 'model', 'aspectRatio', 'raw', etc.)
valueNoThe value to set for the option

Implementation Reference

  • src/index.ts:676-745 (registration)
    Registration of the 'set_default' MCP tool, including input schema (option: string, value: any) and the inline handler function. The handler checks if replicateClient is initialized, calls replicateClient.setDefault(option, value), retrieves all defaults, formats a response with model details if applicable, and returns formatted text content.
    server.tool(
      "set_default",
      {
        option: z.string().describe("The option name to set (e.g., 'model', 'aspectRatio', 'raw', etc.)"),
        value: z.any().describe("The value to set for the option")
      },
      async ({ option, value }) => {
        try {
          if (!replicateClient) {
            return {
              content: [{
                type: "text",
                text: "Replicate API client is not initialized. The REPLICATE_API_TOKEN environment variable may not be set."
              }],
              isError: true
            };
          }
    
          // Set the default value
          replicateClient.setDefault(option, value);
    
          // Get all current defaults for the response
          const allDefaults = replicateClient.getAllDefaults();
    
          // Format the response based on the option type
          let detailedResponse = "";
    
          if (option === 'model') {
            // For model option, provide more detailed information
            const models = replicateClient.getAvailableModels();
            const selectedModel = models.find(model => model.id === value);
    
            if (selectedModel) {
              detailedResponse = `## ${selectedModel.name} ✓ SELECTED\n` +
                               `- ID: \`${selectedModel.id}\`\n` +
                               `- Description: ${selectedModel.description}\n` +
                               `- Capabilities: ${selectedModel.capabilities.join(', ')}\n` +
                               `- Status: **Currently selected as default model**\n\n`;
            }
          }
    
          // Format all current defaults as a table
          const defaultsTable = Object.entries(allDefaults)
            .map(([key, val]) => `| ${key} | ${typeof val === 'object' ? JSON.stringify(val) : val} |`)
            .join('\n');
    
          return {
            content: [{
              type: "text",
              text: `# Default Setting Updated\n\n` +
                    `Successfully set default \`${option}\` to: \`${value}\`\n\n` +
                    detailedResponse +
                    `## Current Default Settings\n\n` +
                    `| Option | Value |\n` +
                    `|--------|-------|\n` +
                    defaultsTable +
                    `\n\nThese settings will be used by default for all image generation unless overridden in the tool call.`
            }]
          };
        } catch (error: any) {
          return {
            content: [{
              type: "text",
              text: `Error setting default: ${error.message}`
            }],
            isError: true
          };
        }
      }
    );
  • Core handler logic for setting defaults in DefaultsManager class. Validates the option/value pair, handles special cases for aspectRatio/width/height, stores the value in defaults object, and logs the change. Called by ReplicateClient.setDefault.
    setDefault(option: string, value: any): void {
      // Validate the option and value
      this.validateOption(option, value);
    
      // Special handling for aspectRatio, width, and height
      if (option === 'aspectRatio') {
        // When setting aspectRatio, clear width and height
        delete this.defaults.width;
        delete this.defaults.height;
      } else if (option === 'width' || option === 'height') {
        // When setting width or height, clear aspectRatio
        delete this.defaults.aspectRatio;
      }
    
      // Set the default value
      this.defaults[option] = value;
      console.log(`Default ${option} set to: ${value}`);
    }
  • ReplicateClient.setDefault method that delegates to the underlying DefaultsManager.setDefault, providing the interface used by the MCP tool handler.
    setDefault(option: string, value: any): void {
      this.defaultsManager.setDefault(option, value);
    }
  • Input schema for the set_default tool using Zod: option (string) and value (any).
    {
      option: z.string().describe("The option name to set (e.g., 'model', 'aspectRatio', 'raw', etc.)"),
      value: z.any().describe("The value to set for the option")
    },

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