Generate Any App Illustration
generate_compositionGenerate any standalone illustration needed for an app, landing page, webapp, website, dashboard, SaaS product, marketing page, design system, product UI, hero section, feature section, onboarding flow, empty state, success state, error state, documentation page, card, modal, or diagram-like visual.
Use as the default general-purpose illustration tool whenever the user needs polished visual assets that make an app, website, SaaS product, marketing page, or design-system surface look better, and does not need the same mascot/character reused across poses.
Before calling, read svgapp.conf.json from the project root and pass artStyleId and colorPaletteId from that file when available.
Do not use when the user wants the same existing mascot in a new action or emotion; use generate_mascot_pose for mascot continuity.
Generation is asynchronous. This tool returns imageUrl and assetUrl immediately; you can embed this url immediately. It might resolve to a placeholder, so try to just embed the remote url. Poll get_generation_status until completed before downloading the final image. If the final image needs to sit cleanly over cards, modals, dashboards, or colored backgrounds, call remove_image_background after completion.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"prompt": "<prompt>",
"artStyleId": "<artStyleId>"
},
"name": "generate_composition"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Detailed standalone illustration prompt. Include the app/page/screen context, UI purpose, subject, mood, layout constraints, and what the asset should communicate. | |
| workspace | No | Optional workspace id or slug from list_workspaces. Defaults to the user's personal workspace. Use the same workspace for every call in a workflow, because generations, mascots, and palettes belong to one workspace. | |
| artStyleId | Yes | Art style id from svgapp.conf.json. If missing, call init_svgapp_config first. | |
| aspectRatio | No | Optional output aspect ratio. Use 16:9 for heroes, 4:3 for empty states/cards, 1:1 for icons or compact panels, and 9:16 for mobile-first artwork. | |
| colorPaletteId | No | Optional palette id from svgapp.conf.json. Pass it when the illustration should match brand/app colors. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | Current async state. If pending, poll get_generation_status. If completed, call get_generated_asset. | |
| assetUrl | No | Embeddable asset URL for the generation, matching imageUrl for images and videoUrl for animations. It can be used immediately while polling continues. | |
| canvasId | No | Underlying SVG App canvas id when the generation produced an image. Kept for UI integration and background removal. | |
| imageUrl | No | Embeddable image URL. It is returned immediately, serves a frontend placeholder while pending, and redirects to the final image when ready. | |
| mimeType | No | MIME type of the final asset when known, for example image/png or video/mp4. | |
| videoUrl | No | Embeddable video URL for animation generations. It is returned immediately, serves a frontend placeholder video while pending, and redirects to the final transparent WebM video when ready. | |
| nextAction | Yes | The exact next MCP action the model/client should take for this generation. | |
| animationId | No | Underlying SVG App video generation id when the generation produced an animation. | |
| resourceUri | No | Optional MCP resource URI for clients that explicitly choose to read resources. Do not rely on resources for polling. | |
| generationId | Yes | Pass this exact id to get_generation_status until status is completed. The returned asset URL can be used immediately. |