Skip to main content
Glama

Separate Image Layers

separate-image-layers

Turn a flat image already stored in the user's Canva account into a new Canva design in which the text, objects, and background become separate elements that can each be edited on their own.

Use to make the wording in a poster, banner, flyer, or social graphic editable; swap out or remove one object in a graphic while keeping the rest; recover an editable design from artwork the user only has as a PNG, JPEG, or WEBP; or rebuild a graphic made outside Canva so it can be resized, restyled, or exported from Canva.

Only call once the image is already stored in the user's Canva account. Flat graphics convert well; photographs convert poorly. Every call saves a brand-new design and leaves the source image untouched. Not for saving an image as-is, editing an existing Canva design, or using an image only as inspiration for a fresh layout.

Starts the conversion as a job rather than returning the design: the response carries a job_id and a continuation_token. When this tool's UI widget is shown, the widget polls get-separate-image-layers-job itself and displays the design when ready - do not poll it yourself. Only when no widget is shown, poll get-separate-image-layers-job with both, waiting the number of seconds in polling_policy.wait_seconds before each call, until the job completes and returns the design link to share with the user.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleNoTitle for the new design, e.g. 'Summer sale poster'. Use the user's wording when they gave one.
asset_idYesID of a PNG, JPEG, or WEBP image asset in the user's Canva account, as returned when the image was uploaded or listed. Not a URL, a local file path, or a design ID.
user_intentNoMandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
job_idNoStable ID of the layer-separation job. Pass it to get-separate-image-layers-job on every poll.
statusYesStatus of the newly queued job. 'pending' means the job was queued - this call never returns the finished design directly; poll get-separate-image-layers-job with the job_id and continuation_token for completion or failure. 'failed' means no job was queued and there is nothing to poll; the failure explains why.
failureNoWhy no job was queued. Only present when status is 'failed', in which case there is no job_id or continuation_token to poll with.
polling_policyNoHow and when to poll next.
continuation_tokenNoOpaque token to pass on the first poll to get-separate-image-layers-job. Always use the most recent token from the last response.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true) the description discloses that each call creates a brand-new design and leaves the source untouched, that it starts an async job returning job_id and continuation_token, and details the widget-vs-manual polling behavior. This is substantial behavioral context not captured by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but front-loaded: purpose first, then usage, prerequisites, and job/polling mechanics. Each paragraph carries distinct information, though the polling/continuation detail could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the description still covers prerequisites, async job semantics, and polling rules. An agent has everything needed to invoke and follow up correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents title, asset_id, and user_intent fully. The description reinforces that the source must already be stored in the account, tying to asset_id, but adds no new format or constraint detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it turns a flat image in the user's Canva account into a new design with text, objects, and background as separately editable elements. This is clearly distinguishable from siblings like remove-background or generate-image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete when-to-use scenarios (make wording editable, swap/remove one object, recover editable design from PNG/JPEG/WEBP) and explicit exclusions ('Not for saving an image as-is, editing an existing Canva design, or using an image only as inspiration'). It also names the prerequisite and the continuation tool get-separate-image-layers-job.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources