Skip to main content
Glama

Create the booth

create_booth

Create the booth from a finished draft — the step that makes something real, live at its public link. Call it only after the operator has seen the draft via check_generation and agreed to create it; the title and link name (slug) default to the draft's unless the operator chose others. It reads the draft first (so everything set with update_booth_draft — settings, frames, filters, AI effect — is carried), checks the link name, draws the booth's own three photo-strip frames (3 images, up to five minutes), adds three starter frames from the catalogue and the Studio's default 'Normal' filter the way dreambooth.app/new does, then creates the booth with the draft's welcome design, background, colour theme and capture mode. Frames saved with save_frame and filters made with create_filter on this connection are carried automatically; ids can also be passed. Tell the operator it takes 2-6 minutes. Returns a job id; check_generation reports progress and, when done, the booth's public link, id and a dashboard link. If the link name is taken it stops before drawing anything — ask for another and call again. Creating twice with different link names makes two booths. The booth is live (unlisted) at once; there is no tool that edits or deletes a booth — changes happen in the dashboard.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
slugNoThe link name: lowercase letters, digits and single hyphens (dreambooth.app/<slug>). Leave unset to use the draft's proposed slug.
titleNoThe booth's name. Leave unset to use the draft's title (as shown by check_generation / set with update_booth_draft).
draftIdYesThe draft to create, from check_generation.
frameIdsNoIds of frames to include — e.g. a frame the operator just saved with save_frame. Starter frames are added anyway.
filterIdsNoIds of filters to include — e.g. one the operator just made with create_filter. The default 'Normal' filter is added anyway.
captureModeNoLeave unset to keep what the draft proposed ('standard' = classic strip, 'frame-based' = frame mode).
aiEffectTitleNoThe title of a public AI effect to add, exactly as the operator named it. Leave unset for none.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindYes
noteNo
slugNo
whatYes
errorNo
jobIdYes
stateYes
draftIdNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations are sparse (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false) and carry no contradiction — the description's mutation claim matches readOnlyHint=false, and idempotentHint=false matches 'creating twice makes two booths'. The description then goes far beyond annotations: it discloses the slow async nature (2-6 minutes, frames up to five minutes), that it reads draft state first, the early-stop failure mode when the slug is taken, that the booth is live/unlisted immediately, and the side effects of adding starter frames and the default filter. This is exemplary behavioral disclosure for a mutating, non-idempotent tool.

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 (13 sentences), but it is front-loaded with purpose and logically sequenced: purpose → precondition → process → parameter defaults → timing → return value → failure mode → idempotency caveat → edit/delete limitation. Every sentence carries unique information for a genuinely complex tool (7 params, async, stateful, non-idempotent). There is slight redundancy in enumerating the draft-carried fields and the drawn-frame steps, but for this complexity the density is justified. A 5 would require trimming; 4 is fair.

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 tool this complex — asynchronous, stateful, non-idempotent, with side effects and a failure path — the description is remarkably complete. It covers preconditions (draft seen and approved), the full process (read draft, check slug, draw frames, add starters/filter, create), timing (2-6 min), the return shape (job id; check_generation yields link, id, dashboard link), the slug-collision recovery path, and the absence of any edit/delete tool. The output schema exists and handles return details, so the description's inclusion of return context is bonus. The only omission, authentication requirements, is covered by sibling tools connect_account/connection_status and annotations. Nothing an agent needs to invoke this correctly is missing.

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% and each parameter (slug, title, draftId, frameIds, filterIds, captureMode, aiEffectTitle) already carries a solid schema description with patterns and 'leave unset' defaults, so the baseline is 3. The description adds genuine value beyond the schema by explaining the cross-tool relationship: 'Frames saved with save_frame and filters made with create_filter on this connection are carried automatically; ids can also be passed.' This clarifies that frameIds/filterIds are optional overrides on top of auto-carried state — context the schema alone cannot convey.

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 opening phrase 'Create the booth from a finished draft — the step that makes something real, live at its public link' states a specific verb (create), a precise resource (booth), and the defining precondition (finished draft, going live). This cleanly distinguishes it from siblings like update_booth_draft (draft editing), check_generation (progress reporting), and start_booth. An agent can tell them apart without opening any schema.

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 states when to call it ('only after the operator has seen the draft via check_generation and agreed to create it'), which sibling to rely on afterward (check_generation reports progress and the public link), and what NOT to expect ('there is no tool that edits or deletes a booth — changes happen in the dashboard'). The non-idempotency warning ('Creating twice with different link names makes two booths') is critical routing guidance. Nothing is left to inference.

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.