> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Dynamic Mockups

The Dynamic Mockups connector lets your AI agent act in each user's Dynamic Mockups account. Each user connects their own Dynamic Mockups API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 21 tools.

**Authentication:** API Key
**Categories:** Design, Media
**Tools:** 21: 10 read, 10 write, 1 destructive
**Users sign in with:** API key
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=DYNAMICMOCKUPS)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Dynamic Mockups connection

   In **AgentKit > Connections**, create a Dynamic Mockups connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'dynamicmockups'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Dynamic Mockups:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'dynamicmockups_list_catalogs',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "dynamicmockups"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Dynamic Mockups:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="dynamicmockups_list_catalogs",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their Dynamic Mockups credentials there. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'dynamicmockups_get_mockup',
  toolInput: {
    uuid: '<uuid>',
  },
  connector: 'dynamicmockups',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="dynamicmockups_get_mockup",
    tool_input={
        "uuid": "<uuid>",
    },
    connection_name="dynamicmockups",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `dynamicmockups_get_mockup`

Get Mockup · Read-only

Fetch one mockup template from My Templates by its UUID.
Returns the mockup's uuid, name, thumbnail, smart objects (uuid, size, position, print area presets), text layers, collections and thumbnails.
Use get_mockup to read the smart object and text layer uuids of a known mockup. Use list_mockups to browse or search.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `uuid` (`string`, required): UUID of the mockup to retrieve, taken from list_mockups or from the mockup's URL in the web app.

Example input: `{"uuid":"<uuid>"}`

### `dynamicmockups_list_catalogs`

List Catalogs · Read-only

List the catalogs in the account that owns the API key.
Returns each catalog's uuid, name, type (custom or default) and creation time.
Use list_catalogs to find a catalog_uuid for filtering mockups and collections or for creating collections.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `dynamicmockups_list_collections`

List Collections · Read-only

List mockup collections, optionally limited to one catalog.
Returns each collection's uuid, name, mockup count and created and updated times.
Use list_collections to find a collection_uuid for list_mockups or create_bulk_render.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `catalog_uuid` (`string`, optional): Optional UUID of a catalog (from list_catalogs) to limit the collections to. Leave it out to use the default catalog.
- `include_all_catalogs` (`boolean`, optional): Set true to include collections from every catalog. When false or left out, only the default catalog is searched.

Example input: `{}`

### `dynamicmockups_list_mockups`

List Mockups · Read-only

List the mockup templates in My Templates, optionally filtered by catalog, collection or name.
Returns each mockup's uuid, name, thumbnail, smart objects with their uuids, text layers, collections and thumbnails.
Use list_mockups to find a mockup_uuid and smart object uuids before rendering. Use get_mockup when you already have the mockup uuid.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `catalog_uuid` (`string`, optional): Optional UUID of a catalog (from list_catalogs) to limit the mockups to. Leave it out to use the default catalog.
- `collection_uuid` (`string`, optional): Optional UUID of a collection (from list_collections) to limit the mockups to.
- `include_all_catalogs` (`boolean`, optional): Set true to include mockups from every catalog. When false or left out, only the default catalog is searched.
- `name` (`string`, optional): Optional name filter, for example 'mug', to narrow the mockups returned.

Example input: `{}`

### `dynamicmockups_mockanything_get_product`

Get MockAnything Product · Read-only

Fetch the full detail of one print-on-demand product.
Returns the product's uuid, name, brand, style code, category, decoration areas with position ids and sources, colors and sizes.
Use mockanything_get_product to pick valid size, color and decoration values for mockanything_create. Get the uuid from mockanything_search_products.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `uuid` (`string`, required): UUID of the product, taken from mockanything_search_products.

Example input: `{"uuid":"<uuid>"}`

### `dynamicmockups_mockanything_get_status`

Get MockAnything Status · Read-only

Check the progress of an AI mockup creation task started from a prompt.
Returns data with the task_id, state (PROGRESS, SUCCESS or FAILURE), image_url and, on SUCCESS, the mockup details whose uuid works as mockup_uuid for rendering.
Use mockanything_get_status after mockanything_create returns a task_id. Poll again while the state is PROGRESS.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `task_id` (`string`, required): Task id returned by mockanything_create.

Example input: `{"task_id":"<task_id>"}`

### `dynamicmockups_mockanything_list_styles`

List MockAnything Styles · Read-only

List the visual styles available for AI-generated mockups.
Returns each style's id, description and the models that support it.
Use mockanything_list_styles to find a valid style for mockanything_create. Pass a model to see only the styles that model supports.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `model` (`string`, optional): Optional AI model to limit the styles to. All styles for all models are returned when left out. One of: `nano_banana_2`, `nano_banana_lite`, `seedream_4_0`, `seedream_4_5`, `gpt_image_2`.

Example input: `{}`

### `dynamicmockups_mockanything_search_products`

Search MockAnything Products · Read-only

Search the print-on-demand product catalog used to ground AI mockups.
Returns a list of matching products, each with a name and uuid.
Use mockanything_search_products to find a product uuid, then mockanything_get_product for its sizes, colors and decoration areas.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `query` (`string`, required): Search text for the product, for example 'gildan 5000 t-shirt'.

Example input: `{"query":"<query>"}`

### `dynamicmockups_motionmockups_get_status`

Get MotionMockups Status · Read-only

Check the status of a submitted video generation request.
Returns data with the request_id, status (IN_QUEUE, PROCESSING, COMPLETED, FAILED, CANCELLED or ERROR), queue_position and, when COMPLETED, a video object with url, content_type, file_name and file_size.
Use motionmockups_get_status after motionmockups_submit. Poll again while the status is IN_QUEUE or PROCESSING.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `request_id` (`string`, required): Request id returned by motionmockups_submit.

Example input: `{"request_id":"<request_id>"}`

### `dynamicmockups_motionmockups_list_models`

List MotionMockups Models · Read-only

List the video models available for MotionMockups with their limits and costs.
Returns each model's value, display name, default duration, allowed durations with credit costs and estimated time, and supported aspect ratios.
Use motionmockups_list_models before motionmockups_submit to choose a model and valid duration and aspect_ratio.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `dynamicmockups_create_batch_render`

Create Batch Render · Write

Render several mockups in a single request, each with its own artwork.
Returns data with total_renders, successful_renders, failed_renders and a renders list holding each render's status, export_path, export_label and mockup_uuid.
Use create_batch_render for multiple different mockups. Use create_render for one image and create_bulk_render to render a whole collection with shared artwork.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `renders` (`array`, required): Renders to produce, one entry per mockup. Each entry needs a mockup_uuid and a smart_objects list in the same shape as create_render, and may add text_layers and an export_label. Each smart object names its uuid and an asset with a public image url (jpg, jpeg, png, webp or gif). Example: [{"mockup_uuid": "0663101b-f01c-4e85-89af-f90b4e9f983b", "export_label": "front", "smart_objects": [{"uuid": "7d1b2c9e-4f0a-4c3e-9a55-1e2f3a4b5c6d", "asset": {"url": "https://example.com/logo.png", "fit": "contain"}}]}].
- `image_format` (`string`, optional): Format of the exported image: jpg, png or webp. The API returns png when you leave it out. One of: `jpg`, `png`, `webp`.
- `image_size` (`integer`, optional): Width in pixels of the exported image, for example 720. Height scales automatically. Leave it out for the full high-resolution image.
- `mode` (`string`, optional): Whether the exported image URL opens in the browser (view) or downloads as a file (download). The API serves a download when you leave it out. One of: `view`, `download`.

Example input: `{"renders":[]}`

### `dynamicmockups_create_bulk_render`

Create Bulk Render · Write

Render every mockup in a collection at once using shared artwork and color inputs.
Returns data with the export_label and an exports list of rendered image urls with labels.
Use create_bulk_render when the collection defines artwork or color mapping inputs. Use create_batch_render to pick individual mockups.
Needs a collection_uuid from list_collections.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `collection_uuid` (`string`, required): UUID of the collection whose mockups will all be rendered, taken from list_collections.
- `artworks` (`object`, optional): Artwork inputs for the collection, as an object that maps each artwork input name defined in the collection to a public image URL. Example: {"artwork_main": "https://example.com/logo.png"}.
- `colors` (`object`, optional): Color inputs for the collection, as an object that maps each color input name defined in the collection to a hex color code. Example: {"color_main": "#ff8800"}.
- `export_label` (`string`, optional): Optional label echoed back unchanged in the response so you can match the result to your request, for example 'tshirt-front-blue'.
- `image_format` (`string`, optional): Format of the exported image: jpg, png or webp. The API returns png when you leave it out. One of: `jpg`, `png`, `webp`.
- `image_size` (`integer`, optional): Width in pixels of the exported image, for example 720. Height scales automatically. Leave it out for the full high-resolution image.
- `mode` (`string`, optional): Whether the exported image URL opens in the browser (view) or downloads as a file (download). The API serves a download when you leave it out. One of: `view`, `download`.

Example input: `{"collection_uuid":"<collection_uuid>"}`

### `dynamicmockups_create_catalog`

Create Catalog · Write

Create a custom catalog in the workspace that owns the API key.
Returns the new catalog's uuid, name, type and creation time.
Use create_catalog to group collections and mockups, for example one catalog per store. Retrying creates another catalog with the same name.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name of the custom catalog, 1 to 255 characters, for example 'Etsy store'.

Example input: `{"name":"<name>"}`

### `dynamicmockups_create_collection`

Create Collection · Write

Create a new collection for grouping mockup templates.
Returns the new collection's id, uuid, workspace id, catalog id, name, slug and published flag.
Use create_collection to prepare a group of mockups for bulk rendering. Use list_collections to find existing ones.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name of the collection to create, for example 'Tea mugs'.
- `catalog_uuid` (`string`, optional): Optional UUID of the catalog (from list_catalogs) to place the collection in. The default catalog is used when left out.

Example input: `{"name":"<name>"}`

### `dynamicmockups_create_embroidery_effect`

Create Embroidery Effect · Write

Turn an image into an embroidery-style image.
Returns data with the export_path URL of the generated embroidery image.
Use create_embroidery_effect to prepare artwork before rendering it onto a mockup. Provide either image_url or image_data_b64.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `image_data_b64` (`string`, optional): Base64-encoded image data to process. Provide either image_data_b64 or image_url.
- `image_url` (`string`, optional): Public URL of the image to process. Provide either image_url or image_data_b64.

Example input: `{}`

### `dynamicmockups_create_render`

Create Mockup Render · Write

Render one mockup image by placing your artwork on the chosen mockup's smart objects.
Returns success, a message and data with the export_label and the export_path URL of the rendered image.
Use create_render for a single image. Use create_batch_render for several mockups at once and create_bulk_render for a whole collection.
Needs the mockup uuid and smart object uuids from list_mockups or get_mockup.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `mockup_uuid` (`string`, required): UUID of the mockup template to render, taken from list_mockups.
- `smart_objects` (`array`, required): Smart objects to fill with your artwork. Each entry names a smart object by its uuid (from list_mockups or get_mockup) and usually carries an asset with a publicly reachable image url (jpg, jpeg, png, webp or gif) and a fit of stretch, contain or cover. An asset can also set size, position and rotate. Each entry may add a hex color overlay, a blending_mode, adjustment_layers (brightness, contrast, opacity, saturation, vibrance, blur), a print_area_preset_uuid, and a decoration_method that only affects MockAnything templates. Example: [{"uuid": "0663101b-f01c-4e85-89af-f90b4e9f983b", "asset": {"url": "https://example.com/logo.png", "fit": "contain"}}].
- `export_label` (`string`, optional): Optional label echoed back unchanged in the response so you can match the result to your request, for example 'tshirt-front-blue'.
- `image_format` (`string`, optional): Format of the exported image: jpg, png or webp. The API returns png when you leave it out. One of: `jpg`, `png`, `webp`.
- `image_size` (`integer`, optional): Width in pixels of the exported image, for example 720. Height scales automatically. Leave it out for the full high-resolution image.
- `mode` (`string`, optional): Whether the exported image URL opens in the browser (view) or downloads as a file (download). The API serves a download when you leave it out. One of: `view`, `download`.
- `text_layers` (`array`, optional): Text layers to fill on the mockup. Each entry names a text layer by uuid (from get_mockup) and gives the text to show, with an optional font_family (Roboto when left out), font_size in pixels and font_color as a hex code. Example: [{"uuid": "7d1b2c9e-4f0a-4c3e-9a55-1e2f3a4b5c6d", "text": "Hello", "font_color": "#ff0000"}].

Example input: `{"mockup_uuid":"<mockup_uuid>","smart_objects":[{"uuid":"0663101b-f01c-4e85-89af-f90b4e9f983b","asset":{"url":"https://example.com/logo.png","fit":"contain"}}]}`

### `dynamicmockups_export_print_files`

Export Print Files · Write

Export print-ready files for a mockup's smart objects from your artwork.
Returns data with the export_label and a print_files list holding each file's export_path, smart_object_uuid and smart_object_name.
Use export_print_files to get production artwork. Use create_render for a preview image of the finished mockup.
Needs the mockup uuid and smart object uuids from get_mockup.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `mockup_uuid` (`string`, required): UUID of the mockup template to export print files for, taken from list_mockups.
- `smart_objects` (`array`, required): Smart objects to fill with your artwork. Each entry names a smart object by its uuid (from list_mockups or get_mockup) and usually carries an asset with a publicly reachable image url (jpg, jpeg, png, webp or gif) and a fit of stretch, contain or cover. An asset can also set size, position and rotate. Each entry may add a hex color overlay, a blending_mode, adjustment_layers (brightness, contrast, opacity, saturation, vibrance, blur), a print_area_preset_uuid, and a decoration_method that only affects MockAnything templates. Example: [{"uuid": "0663101b-f01c-4e85-89af-f90b4e9f983b", "asset": {"url": "https://example.com/logo.png", "fit": "contain"}}].
- `export_label` (`string`, optional): Optional label echoed back unchanged in the response so you can match the result to your request, for example 'tshirt-front-blue'.
- `image_dpi` (`integer`, optional): Dots per inch of the exported print file, for example 300.
- `image_format` (`string`, optional): Format of the exported image: jpg, png or webp. The API returns png when you leave it out. One of: `jpg`, `png`, `webp`.
- `image_size` (`integer`, optional): Width in pixels of the exported image, for example 720. Height scales automatically. Leave it out for the full high-resolution image.
- `mode` (`string`, optional): Whether the exported image URL opens in the browser (view) or downloads as a file (download). The API serves a download when you leave it out. One of: `view`, `download`.
- `text_layers` (`array`, optional): Text layers to fill on the mockup. Each entry names a text layer by uuid (from get_mockup) and gives the text to show, with an optional font_family (Roboto when left out), font_size in pixels and font_color as a hex code. Example: [{"uuid": "7d1b2c9e-4f0a-4c3e-9a55-1e2f3a4b5c6d", "text": "Hello", "font_color": "#ff0000"}].

Example input: `{"mockup_uuid":"<mockup_uuid>","smart_objects":[{"uuid":"0663101b-f01c-4e85-89af-f90b4e9f983b","asset":{"url":"https://example.com/logo.png","fit":"contain"}}]}`

### `dynamicmockups_mockanything_create`

Create MockAnything Mockup · Write

Create an AI-generated mockup template from a text prompt or from an existing image.
Returns data with a task_id and status for a prompt, which you poll with mockanything_get_status, and completes immediately for an image_url.
Use mockanything_create to make a new template. Provide either prompt or image_url, not both. Uploading an image file is not supported here.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `catalog_uuid` (`string`, optional): Optional UUID of the catalog for the mockup. The default catalog is used when left out.
- `collections` (`array`, optional): Optional collections to attach the mockup to. Each entry either names an existing collection by uuid or names a new collection to create by name, never both. Example: [{"uuid": "0663101b-f01c-4e85-89af-f90b4e9f983b"}, {"name": "AI mockups"}].
- `enhance_prompt` (`boolean`, optional): Set true to run prompt enhancement before generation. Only used with prompt.
- `image_url` (`string`, optional): Public URL of an existing image to use as the mockup image. Provide either image_url or prompt.
- `model` (`string`, optional): AI model used for generation. Only applies when you give a prompt, and is required when style is set. The API picks nano_banana_2 when left out. One of: `nano_banana_2`, `nano_banana_lite`, `seedream_4_0`, `seedream_4_5`, `gpt_image_2`.
- `name` (`string`, optional): Optional name for the mockup, shown in the dashboard.
- `product` (`object`, optional): Optional print-on-demand product to anchor the generation on. Give the product uuid from mockanything_search_products, and optionally a selected_size, a color_name and a decorations list, all of which must match values returned by mockanything_get_product. Example: {"uuid": "0663101b-f01c-4e85-89af-f90b4e9f983b", "color_name": "Black"}.
- `prompt` (`string`, optional): Text prompt describing the mockup image to generate. Provide either prompt or image_url.
- `style` (`string`, optional): Visual style to apply, for example 'polaroid-etsy', 'ugc' or 'fashion'. Requires model. Use mockanything_list_styles to see valid values.

Example input: `{}`

### `dynamicmockups_motionmockups_submit`

Submit MotionMockups Video · Write

Queue an AI video generation request that animates a still image.
Returns data with a request_id, status, model, reserved credits and a status_url to poll.
Use motionmockups_submit to start a video, then motionmockups_get_status with the request_id. Check motionmockups_list_models for the durations and aspect ratios each model allows. This spends credits.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `start_image_url` (`string`, required): Publicly accessible URL of the source image to animate, up to 2000 characters.
- `aspect_ratio` (`string`, optional): Output aspect ratio such as 16:9. Only some models support it, with model-specific values; see motionmockups_list_models.
- `duration` (`integer`, optional): Video length in seconds. Allowed values depend on the model; see motionmockups_list_models. The model's default duration is used when left out.
- `generate_audio` (`boolean`, optional): Set true to also generate audio. This raises the credit cost by a model-specific multiplier.
- `model` (`string`, optional): MotionMockups model to use. The API picks its standard model when left out. One of: `kling_v2.6`, `kling_v3_pro`.
- `negative_prompt` (`string`, optional): Optional description of what to avoid in the video, up to 1000 characters.
- `prompt` (`string`, optional): Optional text describing the desired video, up to 2500 characters. A prompt is generated from the image when left out.
- `skip_discovery` (`boolean`, optional): When true and no prompt is given, skip image auto-prompting and use a neutral default prompt.

Example input: `{"start_image_url":"<start_image_url>"}`

### `dynamicmockups_upload_psd`

Upload PSD · Write

Upload a Photoshop (PSD) file from a public URL and optionally turn it into a mockup template.
Returns data with the uploaded PSD's uuid and name, or the created mockup resource when a template is created.
Use upload_psd to add your own custom mockups. Use delete_psd to remove one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `psd_file_url` (`string`, required): Publicly reachable URL of the PSD file to upload.
- `catalog_uuid` (`string`, optional): Optional UUID of the catalog that receives the created mockup template. The default catalog is used when left out.
- `collection_uuids` (`array`, optional): Optional list of collection UUIDs to add the created mockup template to. Only used when a mockup template is created. Example: ["0663101b-f01c-4e85-89af-f90b4e9f983b"].
- `create_mockup_after_upload` (`boolean`, optional): Set true to create a mockup template from the PSD right after upload.
- `psd_category_id` (`integer`, optional): Optional numeric category id for the PSD file.
- `psd_name` (`string`, optional): Optional name for the uploaded PSD file.

Example input: `{"psd_file_url":"<psd_file_url>"}`

### `dynamicmockups_delete_psd`

Delete PSD · Destructive

Delete an uploaded PSD file, and optionally every mockup created from it.
Returns success and a message confirming the deletion.
Use delete_psd to clean up uploads made with upload_psd. This cannot be undone.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `psd_uuid` (`string`, required): UUID of the PSD file to delete, returned by upload_psd.
- `delete_related_mockups` (`boolean`, optional): Set true to also delete every mockup created from this PSD. When left out, related mockups are not deleted.

Example input: `{"psd_uuid":"<psd_uuid>"}`

## Related

Other Design connectors ([all 22](/agentkit/connectors/?category=design)):

- [Figma](/agentkit/connectors/figma/): Scalekit connector, OAuth, 54 tools
- [Miro](/agentkit/connectors/miro/): Scalekit connector, OAuth, 115 tools
- [Mural](/agentkit/connectors/mural/): Scalekit connector, OAuth, 61 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
