Skip to main content
Glama

Save a generated frame

save_frame

Save one generation from a design thread as a real frame in this operator's frame list, with its photo windows cut out. Call it only when the operator has chosen a result — pass the threadId and generationId that check_generation returned for it. This CREATES a frame: saving the same generation twice makes two frames, so do not retry a call that may have gone through. The frame is private to the account unless the operator explicitly asks for it to be shared. After saving, the operator picks the frame in a booth's frame settings; this tool does not assign it to a booth, and there is no tool that edits or deletes a frame.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoWhat the operator will see in their frame list. Use their words if they named it; otherwise derived from the description.
isPublicNoLeave unset unless they explicitly ask to share it. Default is private to their account.
threadIdYesThe design thread the generation belongs to.
generationIdYesThe generation to save, from check_generation. Each version in a thread has its own id.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindYes
nameNo
stateYes
frameIdNo
isPublicNo
threadIdNo
canvasWidthNo
canvasHeightNo
dashboardUrlNo
generationIdNo
thumbnailUrlNo
placeholderCountNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.9/5.0
Behavior5/5

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

The description goes beyond the annotations: it explains the non-idempotent behavior concretely ('saving the same generation twice makes two frames, so do not retry a call that may have gone through'), the privacy default ('private to the account unless explicitly asked to share'), and the lifecycle limitation (no edit/delete tool). Annotations already flag idempotentHint=false, but the description adds actionable consequences.

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

Conciseness5/5

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

Four sentences, each carrying essential information. The core action is front-loaded, the critical warning about duplicate saves is placed early, and the final sentence addresses scope boundaries. No filler or redundancy.

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?

For a creation tool with an output schema, the description is complete: it covers side effects, privacy, booth assignment, non-idempotency, and the absence of edit/delete tools. An agent has all the context needed to invoke correctly and set expectations.

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 the baseline is 3. The description adds provenance beyond the schema: it tells the agent that threadId and generationId come from check_generation, and that name should use the operator's words if provided. This connects parameters to the workflow, which is meaningful additional semantics.

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: 'save one generation... as a real frame in this operator's frame list, with its photo windows cut out.' It clearly differentiates from siblings like check_generation, refine_frame, and start_frame by naming the exact output and context. An agent can tell this is the frame-creation step, not a preview or edit.

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?

Explicitly says 'Call it only when the operator has chosen a result' and instructs to pass the threadId and generationId returned by check_generation. It also states what this tool does not do: it does not assign the frame to a booth, and no tool edits or deletes frames. This gives clear when-to-use and when-not-to-use guidance.

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.