Skip to main content
Glama

Add to a canvas

add_to_canvas

Put things on one of the user's PopNow canvases, or on a new canvas: finished pictures, videos and audio from earlier results (a popnow:// link, or a job_id even while it is still being made), notes, and draft cards (a prompt set up to generate later; the user starts it on popnow.ai with Shoot and sees the price there). New cards go to the right of what is already there, under it, next to a card you name or inside a named group, and can be wired to existing cards as inputs. Adding is free: no credits are used. To make new media now, call create_image, create_video or another PopNow tool first, then add the result here. Use it when the user asks to put things on a canvas or to lay out a storyboard or board. To keep adding to the same canvas later in the conversation, pass the canvas_id from the earlier result instead of starting a new canvas. If the canvas changed in a way that conflicts, nothing is added: call get_canvas and try again. Afterwards, give the user the canvas link.

Input Schema

NameRequiredDescriptionDefault
groupNoOptional group name. The new cards join the group with this name, or a new group is made.
itemsYesWhat to add, 1 to 20 items, in order.
placeNoWhere the new cards go: right (default, to the right of everything) or below (under everything).
titleNoName for a new canvas, up to 50 characters, for example the project name. Only used when canvas_id is empty.
canvas_idNoThe canvas to add to, from list_canvases or an earlier add_to_canvas result. Leave empty only to start a new canvas.
base_versionNoUsually leave it out: cards are only ever added, never overwritten. Set it to the version from get_canvas only when the new cards must match exactly what you read; if the canvas changed since then, nothing is added and you get the new version.
near_card_idNoOptional card id from get_canvas. The new cards go right next to that card instead.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare the generic mutation profile; the description adds real behavior beyond them: no credits are consumed, in-progress job_ids fill in later, changes are additive-only (never overwritten), and a stale base_version causes a no-op that returns the new version. It also tells the agent to hand the user the canvas link afterwards.

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?

Front-loaded with purpose and the most decision-relevant facts (free, additive, use create_* first), and the sentences are dense with information rather than filler. The draft-card parenthetical about Shoot and pricing is slightly chatty, but nothing is redundant enough to waste space.

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

Completeness4/5

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

For a 7-parameter mutation tool with no output schema, the description covers cost, conflict handling, continuation via canvas_id, and the post-call instruction to surface the canvas link. It does not describe the shape of a successful result beyond the link/version hints, which is the main remaining gap.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description still adds value by explaining placement semantics that go past the enum (right of existing cards, under them, next to a named card, or inside a named group) and by clarifying base_version's usually-omitted role. Most remaining per-item detail (inputs wiring, index, model) lives in the schema rather than the prose.

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?

Opens with a concrete verb and resource ('Put things on one of the user's PopNow canvases') and enumerates the exact item kinds accepted (media, notes, drafts). It explicitly separates itself from the creation siblings by saying to call create_image/create_video first and then add the result here.

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?

States the triggering user intents ('put things on a canvas', 'lay out a storyboard or board'), names alternatives (create_image, create_video, get_canvas), and gives the continuation rule: reuse canvas_id from the earlier result instead of starting a new canvas. Conflict recovery is spelled out ('call get_canvas and try again').

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.