generateImageUrl
Generate image URLs from text prompts using user-configured or custom settings. Specify dimensions, models, and enhancements for tailored visual outputs.
Instructions
Generate an image URL from a text prompt. User-configured settings in MCP config will be used as defaults unless specifically overridden.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| enhance | No | Whether to enhance the prompt using an LLM before generating (default: true) | |
| height | No | Height of the generated image (default: 1024) | |
| model | No | Model name to use for generation (default: user config or "flux"). Use listImageModels to see all available models | |
| prompt | Yes | The text description of the image to generate | |
| safe | No | Whether to apply content filtering (default: false) | |
| seed | No | Seed for reproducible results (default: random) | |
| transparent | No | Generate image with transparent background (gptimage model only, default: false) | |
| width | No | Width of the generated image (default: 1024) |
Input Schema (JSON Schema)
{
"properties": {
"enhance": {
"description": "Whether to enhance the prompt using an LLM before generating (default: true)",
"type": "boolean"
},
"height": {
"description": "Height of the generated image (default: 1024)",
"type": "number"
},
"model": {
"description": "Model name to use for generation (default: user config or \"flux\"). Use listImageModels to see all available models",
"type": "string"
},
"prompt": {
"description": "The text description of the image to generate",
"type": "string"
},
"safe": {
"description": "Whether to apply content filtering (default: false)",
"type": "boolean"
},
"seed": {
"description": "Seed for reproducible results (default: random)",
"type": "number"
},
"transparent": {
"description": "Generate image with transparent background (gptimage model only, default: false)",
"type": "boolean"
},
"width": {
"description": "Width of the generated image (default: 1024)",
"type": "number"
}
},
"required": [
"prompt"
],
"type": "object"
}
Implementation Reference
- src/services/imageService.js:25-73 (handler)Core implementation of generateImageUrl tool: constructs Pollinations API URL with prompt and parameters (model, seed, width, height, enhance, safe, nologo, private).export async function generateImageUrl(prompt, model = 'flux', seed = Math.floor(Math.random() * 1000000), width = 1024, height = 1024, enhance = true, safe = false, authConfig = null) { if (!prompt || typeof prompt !== 'string') { throw new Error('Prompt is required and must be a string'); } // Parameters are now directly passed as function arguments // Build the query parameters const queryParams = new URLSearchParams(); // Always include model (with default 'flux') queryParams.append('model', model); // Add other parameters if (seed !== undefined) queryParams.append('seed', seed); if (width) queryParams.append('width', width); if (height) queryParams.append('height', height); // Add enhance parameter if true if (enhance) queryParams.append('enhance', 'true'); // Add parameters queryParams.append('nologo', 'true'); // Always set nologo to true queryParams.append('private', 'true'); // Always set private to true) queryParams.append('safe', safe.toString()); // Use the customizable safe parameter // Construct the URL const encodedPrompt = encodeURIComponent(prompt); const baseUrl = 'https://image.pollinations.ai'; let url = `${baseUrl}/prompt/${encodedPrompt}`; // Add query parameters const queryString = queryParams.toString(); url += `?${queryString}`; // Return the URL directly, keeping it simple return { imageUrl: url, prompt, width, height, model, seed, enhance, private: true, nologo: true, safe }; }
- src/services/imageSchema.js:8-45 (schema)Input schema/JSON Schema for the generateImageUrl tool defining parameters and validation.export const generateImageUrlSchema = { name: 'generateImageUrl', description: 'Generate an image URL from a text prompt. User-configured settings in MCP config will be used as defaults unless specifically overridden.', inputSchema: { type: 'object', properties: { prompt: { type: 'string', description: 'The text description of the image to generate' }, model: { type: 'string', description: 'Model name to use for generation (default: user config or "flux"). Use listImageModels to see all available models' }, seed: { type: 'number', description: 'Seed for reproducible results (default: random)' }, width: { type: 'number', description: 'Width of the generated image (default: 1024)' }, height: { type: 'number', description: 'Height of the generated image (default: 1024)' }, enhance: { type: 'boolean', description: 'Whether to enhance the prompt using an LLM before generating (default: true)' }, safe: { type: 'boolean', description: 'Whether to apply content filtering (default: false)' } }, required: ['prompt'] } };
- pollinations-mcp-server.js:206-222 (registration)MCP server request handler for CallToolRequestSchema that dispatches to generateImageUrl implementation with default config.if (name === 'generateImageUrl') { try { const { prompt, model = defaultConfig.image.model, seed, width = defaultConfig.image.width, height = defaultConfig.image.height, enhance = defaultConfig.image.enhance, safe = defaultConfig.image.safe } = args; const result = await generateImageUrl(prompt, model, seed, width, height, enhance, safe, finalAuthConfig); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) } ] }; } catch (error) { return { content: [ { type: 'text', text: `Error generating image URL: ${error.message}` } ], isError: true }; }
- src/schemas.js:32-44 (registration)Registers generateImageUrlSchema in the list of tools returned by listTools endpoint.export function getAllToolSchemas() { return [ generateImageUrlSchema, generateImageSchema, editImageSchema, generateImageFromReferenceSchema, listImageModelsSchema, respondAudioSchema, listAudioVoicesSchema, respondTextSchema, listTextModelsSchema ]; }