List image models
list_modelsList supported OpenAI image models with their capabilities (sizes, qualities, edit/variation support) to check accepted options before generating or editing images.
Instructions
List supported OpenAI image models with their capabilities (sizes, qualities, edit/variation support, etc.). Use this before calling generate_image or edit_image to check which options a model accepts.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/models.ts:1-41 (handler)The registerModelsTool function that registers the 'list_models' MCP tool. The handler iterates over all MODELS and returns JSON with default model and per-model capabilities (sizes, qualities, features).
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { MODELS, defaultModel } from "../models.js"; export function registerModelsTool(server: McpServer): void { server.registerTool( "list_models", { title: "List image models", description: "List supported OpenAI image models with their capabilities (sizes, qualities, edit/variation support, etc.). Use this before calling generate_image or edit_image to check which options a model accepts.", inputSchema: {}, }, async () => { const rows = Object.values(MODELS).map((m) => ({ id: m.id, family: m.family, sizes: m.sizes, qualities: m.qualities, max_images_per_request: m.maxN, supports: { edit: m.supportsEdit, variation: m.supportsVariation, background: m.supportsBackground, output_format: m.supportsOutputFormat, input_fidelity: m.supportsInputFidelity, moderation: m.supportsModeration, style: m.supportsStyle, url_response: m.supportsUrlResponse, }, notes: m.notes, })); const payload = { default_model: defaultModel(), models: rows, }; return { content: [{ type: "text", text: JSON.stringify(payload, null, 2) }], }; }, ); } - src/tools/models.ts:6-11 (schema)The tool's input schema (empty object, no parameters required) and title/description metadata for the 'list_models' tool.
"list_models", { title: "List image models", description: "List supported OpenAI image models with their capabilities (sizes, qualities, edit/variation support, etc.). Use this before calling generate_image or edit_image to check which options a model accepts.", inputSchema: {}, - src/server.ts:19-19 (registration)Registration call: registerModelsTool(server) is called during server creation to wire up the 'list_models' tool.
registerModelsTool(server); - src/server.ts:5-5 (registration)Import of registerModelsTool from ./tools/models.js.
import { registerModelsTool } from "./tools/models.js"; - src/models.ts:1-113 (helper)The MODELS data structure and ModelInfo type that provides the model capability data consumed by the list_models handler.
export type Model = | "gpt-image-1.5" | "gpt-image-1" | "gpt-image-1-mini" | "dall-e-3" | "dall-e-2"; export interface ModelInfo { id: Model; family: "gpt-image" | "dall-e-3" | "dall-e-2"; sizes: readonly string[]; qualities: readonly string[]; maxN: number; supportsBackground: boolean; supportsOutputFormat: boolean; supportsInputFidelity: boolean; supportsModeration: boolean; supportsStyle: boolean; supportsEdit: boolean; supportsVariation: boolean; supportsUrlResponse: boolean; notes: string; } export const MODELS: Record<Model, ModelInfo> = { "gpt-image-1.5": { id: "gpt-image-1.5", family: "gpt-image", sizes: ["auto", "1024x1024", "1536x1024", "1024x1536"], qualities: ["auto", "low", "medium", "high"], maxN: 10, supportsBackground: true, supportsOutputFormat: true, supportsInputFidelity: true, supportsModeration: true, supportsStyle: false, supportsEdit: true, supportsVariation: false, supportsUrlResponse: false, notes: "Latest GPT Image model. Always returns base64; URL response_format is not supported.", }, "gpt-image-1": { id: "gpt-image-1", family: "gpt-image", sizes: ["auto", "1024x1024", "1536x1024", "1024x1536"], qualities: ["auto", "low", "medium", "high"], maxN: 10, supportsBackground: true, supportsOutputFormat: true, supportsInputFidelity: true, supportsModeration: true, supportsStyle: false, supportsEdit: true, supportsVariation: false, supportsUrlResponse: false, notes: "GPT Image 1. Always returns base64.", }, "gpt-image-1-mini": { id: "gpt-image-1-mini", family: "gpt-image", sizes: ["auto", "1024x1024", "1536x1024", "1024x1536"], qualities: ["auto", "low", "medium", "high"], maxN: 10, supportsBackground: true, supportsOutputFormat: true, supportsInputFidelity: true, supportsModeration: true, supportsStyle: false, supportsEdit: true, supportsVariation: false, supportsUrlResponse: false, notes: "Smaller/cheaper GPT Image. Always returns base64.", }, "dall-e-3": { id: "dall-e-3", family: "dall-e-3", sizes: ["1024x1024", "1792x1024", "1024x1792"], qualities: ["standard", "hd"], maxN: 1, supportsBackground: false, supportsOutputFormat: false, supportsInputFidelity: false, supportsModeration: false, supportsStyle: true, supportsEdit: false, supportsVariation: false, supportsUrlResponse: true, notes: "DALL·E 3. Generates a single image per request; does not support edits or variations. Deprecated 2026-05-12.", }, "dall-e-2": { id: "dall-e-2", family: "dall-e-2", sizes: ["256x256", "512x512", "1024x1024"], qualities: ["standard"], maxN: 10, supportsBackground: false, supportsOutputFormat: false, supportsInputFidelity: false, supportsModeration: false, supportsStyle: false, supportsEdit: true, supportsVariation: true, supportsUrlResponse: true, notes: "DALL·E 2. Only model with variations. Deprecated 2026-05-12.", }, }; export function defaultModel(): Model { const env = process.env.DALLE_DEFAULT_MODEL as Model | undefined; if (env && env in MODELS) return env; return "gpt-image-1.5"; }