Dreambooth Studio MCP server
online · 100% uptimecom.dreamboothstudio/dreambooth·v0.1.0Ask about your Dreambooth Studio photobooths: sessions, revenue, credits, projects, device status.
0 stars
Reviews
Write oneNobody has reviewed Dreambooth Studio yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Dreambooth Studio tools (22, 3 write)
write = sends, deletes, buys or postscheck_generationFreeReport on background work started by start_frame, refine_frame, start_booth, refine_booth or create_booth. Always pass the jobId that the start/refine/create call returned — keep it for the rest of the conversation, because an id keeps working for the full 15 minutes even if the connection re-authenticates partway through, and calling with no arguments does not. With no arguments it reports the most recent job of any kind, which is a convenience for when the id was lost, not the normal way to call it. Designing a booth takes 1-3 minutes, a redraw about a minute, creating a booth 2-6 minutes: tell the operator that, then poll about every 15 seconds. While it says 'running', nothing exists yet — relay the progress line if there is one, tell the operator it is still going, and wait 10-15 seconds before calling again rather than polling tightly. When it says 'done': a frame job carries imageUrl, threadId and generationId (a preview — nothing saved until save_frame); a booth design carries draft{…} (a draft — nothing created until create_booth); a booth creation carries booth{slug, boothUrl, projectId} — the one case where something now exists. This reads a status and creates nothing, so it is always safe to call.
connect_accountFreeConnect this conversation to the person's Dreambooth Studio account. The answer's status says what happened. already_connected: an account is connected; nothing to do. awaiting_approval: it returns a link the person opens in their own browser to sign in with Google and approve. A Google account with the same email as an existing Dreambooth account connects that account. Ask them to open it and say when they are done; do not call this tool again while waiting. use_client_sign_in: this client connects accounts through its own app or connector settings, where they can sign in with an email and password or with Google, so no link is returned. Ask them to connect Dreambooth there (the client also asks by itself when a tool needs an account), then repeat their question. Either way, someone who has no Dreambooth account yet gets one when they sign in. Call this when another tool reports that no account is connected, or when someone asks to connect or switch accounts.
connection_statusFreeWhether this conversation currently has a Dreambooth account connected, and which one. Call this if you are unsure whether to run connect_account first. Cheap and read-only — it does not contact Dreambooth.
create_boothwrite actionFreeCreate 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.
create_filterwrite actionFreeCreate a new photo filter on this operator's account from a description of the look they want — 'warm and slightly faded', 'high contrast black and white'. Translate the description into the adjustment numbers yourself; the ranges are in the schema. Call this only when the operator asks for a filter to be CREATED. It does not change an existing filter, and there is no tool that does — to edit or delete one, send them to the dashboard. Creating the same filter twice makes two filters, so do not retry a call that may have gone through.
duplicate_projectFreeCopy one of this operator's existing booths, with all of its settings, into a new one. Use it when they want another booth 'like' one they already run — a second location, a one-off event, a variant to experiment on. Call list_projects first to get the project id; the operator will name the booth, not its id. The copy is named after the original and is not published at the original's public address, so it is safe to make and they can rename it in the dashboard. To design a NEW booth from a description, use start_booth instead of this; there is no tool that edits or deletes a booth that already exists.
get_booth_draftFreeRead a booth draft by its draftId — the same summary check_generation gives for a finished design, plus everything the draft has been given since (settings, chosen frames, filters, AI effect). Use it when the job from start_booth is no longer tracked, to show the draft again before create_booth, or to confirm what update_booth_draft applied. Reads only; nothing is generated or created. A draft lives 7 days on the operator's account.
get_creditsFreeThis operator's remaining AI credit balance and their current subscription plan, including when it ends. Call this when they ask how many credits are left, whether they can still run AI effects, or what plan they are on. Credits are separate from wallet money — do not confuse the two.
get_gallery_statsFreeHow much media this operator's booths have produced: total, still active, and expired past the retention window. Call this when the operator asks how many photos or videos a booth has taken, or whether media is being lost to retention. Returns counts only, not the media itself.
get_projectFreeFull detail for a single booth: its name, public link, currency, screen size, and the live status of the device running it — whether it is online, when it was last seen, app version, and camera/printer/internet state. Call this when the operator asks about one specific booth, or whether a booth is working. Get the project id from list_projects first.
get_revenue_summaryFreeBusiness revenue from this operator's photobooth sessions across EVERY payment channel — gateway payments, cash vouchers (cash collected at the booth) and discount vouchers — grouped by month or day and by currency, with extra-print revenue and AI-effect purchases reported separately. Use this for any question about income, revenue or omzet. It is also the right tool when wallet earnings look too small: cash and voucher money never reaches the wallet ledger, so for operators who take cash the wallet figure legitimately understates income.
get_sessionsFreeList the photo sessions recorded on this operator's booths, with totals. Call this when the operator asks how busy a booth has been, how many sessions ran in a period, or wants to inspect individual sessions. Supports date ranges, per-booth filtering, payment status and payment channel. For money totals rather than session counts, use get_revenue_summary instead.
get_wallet_transactionsFreeThis operator's wallet ledger: gateway earnings, withdrawals and refunds, newest first. Use for questions about the wallet, payouts or withdrawals. Do NOT use it to answer 'how much did I earn' — the wallet excludes cash and voucher income entirely, so for operators who take cash it understates real revenue. Use get_revenue_summary for income.
list_projectsFreeList the photobooth projects this operator owns, with id, name, public link slug, whether it is active, and its currency. Call this first whenever the operator names a booth — you need the project id to filter any other tool by booth. Does not return booth designs or page layouts.
preview_filterFreeShow what a filter would look like BEFORE creating it: the Studio renders its sample photo (or the operator's own preview photo, if they set one in the dashboard) through the exact pipeline the booth uses, and returns an image URL. Free and read-only — call it whenever the operator is designing a filter, adjust the numbers from their reaction ('warmer', 'less contrast'), preview again, and call create_filter with the same adjustments only once they are happy. Some adjustments (shadows, highlights, whites, blacks, clarity, dehaze, vibrance, texture) are applied by the booth but cannot be shown here; the result lists them as notPreviewed so you can say so. Nothing is created by this tool.
refine_boothFreeChange a booth draft from start_booth, using the draftId check_generation returned. what='welcome' redraws the welcome screen from an instruction ('warmer colours', 'bigger headline', 'less clutter') while keeping the design; add orientation 'phone' or 'laptop' to redraw only that screen (1 redraw) — without it both screens are redrawn (2). what='app-background' redraws the calmer backdrop behind the rest of the booth (1 redraw). what='everything' rebuilds the whole draft from a NEW full description (spends 1 of the draft's 3 full generations) — only when the operator wants a different booth, not a tweak. A draft has 5 redraws in total; check_generation reports what is left. Title, headline, link name and colours cannot be edited directly: they change only through a redraw instruction, or at create time (title, slug). Returns a job id; call check_generation. Call only when the operator asks for a change — never iterate on your own.
refine_frameFreeAsk for a changed version of a frame in an existing design thread — 'darker', 'less ornament', 'make the flowers smaller', 'more gold'. Call it with the threadId that check_generation returned for start_frame, and ONLY when the operator asks for a change: every call spends part of the account's free daily allowance, so never iterate on your own initiative. It returns immediately with a job id; call check_generation for the new preview. Earlier versions in the thread stay available to save_frame, so a change the operator dislikes loses nothing.
save_frameFreeSave 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.
search_docsFreeSearch the Dreambooth Studio documentation and FAQ. Call this before answering any question about the product, hardware, printing, booth setup, guest payments, or troubleshooting — answer from the docs rather than from memory. Pages about Dreambooth's own plans and billing come back as a link only: share the link, and do not quote prices, plans or trials in the conversation. Works without a connected account.
start_boothFreeDesign a complete photobooth (a 'booth') for this operator from a description — the Studio designs the welcome screen for phone and laptop, the in-booth background, the colour theme, the capture mode, a title and a link name, exactly as dreambooth.app/new does. Before calling, gather in chat what /new would ask and put ALL of it in the prompt: the occasion or business, the vibe or style, colours, and the language the booth should speak — there is no separate questions step. It returns a job id immediately; call check_generation, and do NOT describe the booth as designed or created until that says done. The result is a DRAFT with a draftId: nothing is in the operator's booth list until create_booth. Every call makes a new draft and spends 1 of its 3 full generations, and an account may start 10 drafts an hour — never call it speculatively or twice for one request; change a draft with refine_booth instead.
start_frameFreeStart designing a new photo frame for this operator's booths from a description of the look they want — 'batik motifs in warm gold', 'minimal Scandinavian, lots of white space'. It opens a design thread and makes the FIRST version. It returns immediately with a job id; call check_generation to see the result, and do NOT describe the frame as made until that says so. The result is a preview in the thread — nothing is in the operator's frame list until save_frame is called with the generation they choose. To change a result, call refine_frame with the threadId that check_generation returns, rather than starting again. Every generation spends part of the account's free daily allowance, so do not call this speculatively, twice for the same request, or while another generation is still running.
update_booth_draftwrite actionFreeChange a booth draft without a redraw: its title, link name, welcome button text, colours, capture mode, language, which frames and filters it carries, its AI effect, and the page settings the dashboard editor offers (photo count, countdown, timeouts, GIF/recording, retake, checkout, payment, result). Use it after check_generation shows the draft and the operator asks for one of these; what it sets is applied when create_booth runs. It cannot change the welcome headline or subtext of an AI-designed welcome (those are painted into the image — use refine_booth), and prices or packages are set in the dashboard. Answers at once with the updated draft, `applied` (what landed) and `rejected` (what did not, and why) — relay a rejection as a sentence, never as success. It never touches a booth that already exists.
Public scan report
scanner v0.1.10 · 2026-11-04 · same rubric, same numbers if you re-run it
- –Code scanremote-only server, no package to scann/a
- Live reliabilityremote reachable in 1081ms20/20
- Tool poisoning22 tool descriptions checked15/15
- Auth qualityopen endpoint exposes 3 write-action tools with no auth3/15
- Maintenancelast push 0 days ago15/15
- Maintainer identitynamespace and repository owner differ; GitHub account older than a year; website matches verified namespace8/10
Findings (1)
- highWrite-action tools reachable without authentication
auth.open-write
How Dreambooth Studio compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 81/100
- higher than 62% of 48,255 servers
- Tools
- 22
- the typical server has 7
- Tools that change things
- 14%
- typical: 0%. Fewer write tools means less an agent can break
- Uptime
- 100%
- of our recent checks; the typical remote server answers 100%
- Response time
- 344 ms
- faster than 42% of 30,031 servers
What its tools let an agent do: 16 read · 3 create · 1 change · 2 run or deploy
Install Dreambooth Studio in Claude Code, Cursor or VS Code
claude mcp add --transport http dreambooth https://mcp.dreamboothstudio.com/mcp
What the publisher says
From the Dreambooth Studio repository's README, as published. We do not edit it. Read it on GitHub
dreambooth-mcp
MCP server for Dreambooth Studio. Lets ChatGPT, Claude and Gemini answer an operator's questions about their own booths — "how did my Bandung booth do this week?" — by wrapping the Studio API the dashboard already uses.
Status: live at https://mcp.dreamboothstudio.com/mcp (server 0.3.0). Streamable HTTP + stdio, 23 tools — 13 read-only, 9 that create or edit something, and connect_account. Listed in the official MCP Registry as com.dreamboothstudio/dreambooth v0.1.0 (registry versions are immutable, so that entry stays at 0.1.0).
Ten tools are always registered, on stdio and on every HTTP session:
sessioninfo is an eleventh, registered only when MCPDIAGNOSTICS=1.
Twelve more, listed on every connection (see below for what guards them):
Phase 3 hardening has since landed, on the OAuth path: the Studio runs a full OAuth 2.1 authorization server — PKCE S256 only, one-hour access tokens, 30-day refresh, dynamic client registration, RFC 8707 resource audience, RFC 7009 revocation, and a CSRF-bound consent screen that names the scopes being granted. This server is a protected resource in front of it (RFC 9728). Both discovery documents are live.
The device flow is the older path and keeps the older properties — its token is a year long, unscoped and unrevocable, so it must not be able to write. It cannot: the Studio refuses it with a 403 and a sentence naming the fix, exactly as it refuses a read-scoped OAuth token.
The tool list is the same on every connection. The twelve above used to be registered only when a request carried a bearer, which made tools/list answer 10 tools with no Authorization header and 22 with any string as one — the check was on the header's presence, not on anything in it. That is gone. An inventory that moves is unusable: the ChatGPT submission portal scans from the browser with no credential, so it could only ever see the read half while the submission declared all 22, and any client caching a pre-sign-in list keeps offering ten tools to an operator who has connected an account. What guards these tools now is what always decided the outcome anyway — AUTHREQUIREDTOOLS turns an uncredentialled call into the 401 that starts the OAuth flow, and the Studio's 403 answers a token without booths:write. There is no feature flag in this — an earlier version of this README described one, and it was removed; deploy order is what guards a new tool. See Connecting an account.
Design: docs/dreambooth-mcp-design.md in the Studio repo. Inline cards in ChatGPT: docs/apps-sdk-widgets-plan.md.
What it does not do
This service holds no database, no business logic, and no aggregations. Every tool wraps a route the Studio already exposes, so there is exactly one implementation of "what is this operator's revenue" and it lives in the Studio. The moment an aggregation is copied in here, it becomes a second source of truth that drifts silently — which is how you end up with three different revenue numbers and no way to tell which is right.
Also permanently out of scope: withdrawals, payout accounts, MFA/step-up, subscription token regeneration, and anything under /api/admin.
Run it
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Dreambooth Studio: common questions
- Is Dreambooth Studio MCP server safe?
- Mostly: it is graded B (81/100). Read the Dreambooth Studio safety report
- How do I install Dreambooth Studio?
- It runs remotely at mcp.dreamboothstudio.com. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
- Does Dreambooth Studio need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Dreambooth Studio maintained?
- The last commit was in the last day (2026-11-04). The latest release is v0.1.0.
- Is Dreambooth Studio up?
- 100% of our last 28 checks got an answer. We check remote servers about four times a day.
- What can I use instead of Dreambooth Studio?
- Servers from other publishers that do the same job: e2e MCP server.
- How does Dreambooth Studio compare with other MCP servers?
- safety score 81/100 (higher than 62% of 48,255 servers); tools 22 (the typical server has 7); tools that change things 14% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Dreambooth Studio
Same job from other publishers: the closest match first, then the best rated.
- e2eOpen live web and mobile app sessions from an e2e project to inspect the app and try locators.not reviewedWidely usedA