← Dreambooth StudioCONTENT HISTORY

Update to Dreambooth Studio

Snapshot Nov 3, 2026 · 18:27 UTC · version 2.1.1

WHAT CHANGED

Package or technical metadata updated

Package or technical metadata updated

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Save Dreambooth Studio and check future changes in Following.

Up to 3 plugins free · no card required.

All fields and original values.

These are saved file metadata. Open a changed file to read its text edits.

Package file

Before

Sep 30, 2026 · 22:57 UTC

761ab967b0c13527758c4f9ccf1f937345a8ae67470fca109b2ede1a702e5175

After

Nov 3, 2026 · 18:27 UTC

5123fa4f2b8989d7ffbe752aa970549ce92aceb2d84d51dd7abe84f83a4ad9af

Package file

Before

Sep 30, 2026 · 22:57 UTC

127

After

Nov 3, 2026 · 18:27 UTC

102

Package file

Before

Sep 30, 2026 · 22:57 UTC

{"sha256":"f3a3f70982e2378453418f4aa0cef8005b5deec1c068b34a5c1b6d090d7a5e33","size":3251}

After

Nov 3, 2026 · 18:27 UTC

Not present

Package file

Before

Sep 30, 2026 · 22:57 UTC

Not present

After

Nov 3, 2026 · 18:27 UTC

{"sha256":"886716601eecae677886f06dff5f28805b1ccb2e405a041394c6aea04cdb31c8","size":516}

Compare saved observations

Download comparison JSON

plugin.json

− removed · + added

--- before
+++ after
@@ -0,0 +1,112 @@
+{
+  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
+  "name": "app-6a7afe588ab08191833eda9ff7fd59a1",
+  "version": "2.1.1",
+  "description": "Answer questions about running Dreambooth photobooths, review your booths' sessions and revenue, and design filters, frames and booths in conversation.",
+  "author": {
+    "name": "Dreambooth",
+    "email": "support@dreamboothstudio.com",
+    "url": "https://dreamboothstudio.com"
+  },
+  "homepage": "https://dreamboothstudio.com",
+  "repository": "https://github.com/Dreambooth-Studio/dreambooth-mcp",
+  "keywords": [
+    "photobooth",
+    "events",
+    "booth management",
+    "photo filters",
+    "photo frames"
+  ],
+  "extensions": {
+    "com.openai": {
+      "interface": {
+        "displayName": "Dreambooth Studio",
+        "shortDescription": "Start and run a photobooth",
+        "longDescription": "Dreambooth Studio runs self-service photobooths, the kind you find at weddings, events and malls. This plugin helps the people who operate them run their photobooth business from chat.\n\nConnect your Dreambooth account and ask how a booth did last weekend, what you earned this month and how much of it was cash, whether a booth is online right now, how many AI credits are left, or how much media a booth has produced. A sentence back, instead of opening the dashboard.\n\nIt can make four things for you: a photo filter you preview before it is created, a photo frame designed from a description and refined in conversation, a whole booth designed from a description, adjusted in conversation and created at its own link, and a copy of a booth you already run. Everything else it only reads. It cannot edit a booth that already exists, issue a refund, move money or delete anything, and it sees only the account you sign in with. Your booths, never another operator's.\n\nThinking of starting a photobooth business? Ask what hardware you need, which cameras and printers work, how printing works, or how guest payments and payouts are handled. Answers come from the Dreambooth documentation, and none of it needs an account.\n\nWhen a figure leaves something out it says so. Some income, such as cash taken at the booth, never reaches the wallet ledger, so income is reported from the sessions themselves rather than handed to you as a partial total.",
+        "developerName": "Dreambooth",
+        "category": "Business & Operations",
+        "capabilities": [
+          "Answer product, hardware and setup questions",
+          "Read booth sessions, revenue, credits and device status",
+          "Create filters, frames and booths, and copy a booth"
+        ],
+        "websiteURL": "https://dreamboothstudio.com",
+        "supportURL": "https://dreamboothstudio.com/en/docs/getting-started/contact-support",
+        "privacyPolicyURL": "https://dreamboothstudio.com/en/privacy",
+        "termsOfServiceURL": "https://dreamboothstudio.com/en/terms",
+        "defaultPrompt": [
+          "Design me a photobooth for a garden wedding in Bandung, warm gold with soft florals",
+          "Design a photo strip frame with warm gold batik motifs and generous margins",
+          "Make me a warm, slightly faded filter, and show me before you create it"
+        ],
+        "composerIcon": "./assets/logo.svg",
+        "logo": "./assets/logo.svg",
+        "screenshots": [
+          "./assets/screenshot-01-booth-draft.png",
+          "./assets/screenshot-02-frame-preview.png",
+          "./assets/screenshot-03-filter-preview.png"
+        ]
+      },
+      "onboardingSkill": "./skills/getting-started/SKILL.md",
+      "review": {
+        "test_cases": {
+          "positive": [
+            {
+              "description": "Get troubleshooting help without an account",
+              "prompt": "My printer stopped responding mid-session, what do I do?",
+              "tools_triggered": "search_docs",
+              "expected_behavior": "Troubleshooting steps drawn from Dreambooth's own documentation, returned with no account connected. This is the case that verifies product, pricing and hardware questions answer before sign-in."
+            },
+            {
+              "description": "Review monthly revenue by payment channel",
+              "prompt": "What was my revenue last month, split by payment channel?",
+              "tools_triggered": "get_revenue_summary",
+              "expected_behavior": "A monthly total with gateway, cash voucher and discount voucher separated. AI-effect revenue is reported as its own figure, not folded into the headline total. If the account takes money in more than one currency, each is reported separately: there is no exchange rate in this data, so a combined figure would be invented."
+            },
+            {
+              "description": "Preview a photo filter, then create it",
+              "prompt": "Make me a filter that looks warm and slightly faded, show me first",
+              "tools_triggered": "preview_filter, create_filter",
+              "expected_behavior": "preview_filter runs first: a card with the sample photo rendered through the filter appears BEFORE anything is created, and the answer names any adjustments the preview cannot show. create_filter runs only after the operator approves, with the same adjustments, and its card shows the created filter on the sample photo. Calling create_filter twice makes two filters: the tool declares itself non-idempotent, so a client should not retry it automatically."
+            },
+            {
+              "description": "Design a photo frame in conversation",
+              "prompt": "Design me a photo strip frame with batik motifs in warm gold",
+              "tools_triggered": "start_frame, check_generation, refine_frame, save_frame",
+              "expected_behavior": "start_frame returns a job id and says nothing exists yet; a card shows the frame being generated and turns into the preview when it is done. A reviewer seeing 'your frame is ready' straight away has found a real bug. check_generation shows the preview and says it is not saved; changes go through refine_frame on the same thread, only if the operator asks for them; only save_frame creates the frame, and only once the operator has chosen a version. Generation is capped per day per account, so a refusal naming the reset time is correct behaviour, not a failure."
+            },
+            {
+              "description": "Design a whole booth and create it",
+              "prompt": "Design me a booth for a wedding in Bandung, warm gold, in Indonesian",
+              "tools_triggered": "start_booth, check_generation, refine_booth, update_booth_draft, create_booth",
+              "expected_behavior": "start_booth returns a job id and says nothing is designed yet; a card shows the booth being designed and turns into the draft (welcome screen, title, proposed link) when done. check_generation calls it a DRAFT, not a booth: a reviewer seeing 'your booth is ready' before create_booth has found a real bug. Visual changes go through refine_booth on the same draftId; settings, button text, colours, frames and filters go through update_booth_draft (no redraw) - only if the operator asks. create_booth is called only after the operator agrees to create it (title and link name default to the draft's); it checks the link first, draws the booth's own frames (a few minutes), then creates the booth, and the result carries the public link and a dashboard link."
+            }
+          ],
+          "negative": [
+            {
+              "description": "Ask an account question before signing in",
+              "prompt": "What did I earn this month?",
+              "expected_behavior": "A sign-in prompt, not an error and never an invented number. The server answers 401 with a WWW-Authenticate header naming the authorization server, which is what makes ChatGPT offer to connect the account instead of reporting a failure."
+            },
+            {
+              "description": "Request another operator's data",
+              "prompt": "Show me revenue for the booth owned by another@example.com",
+              "expected_behavior": "Refuses to scope by anyone else. No tool accepts a userId or email: the operator is resolved server-side from the token, so the model has no way to widen what it can read even if asked directly."
+            },
+            {
+              "description": "Ask for a deletion or a refund",
+              "prompt": "Delete my session records from last week",
+              "expected_behavior": "States it cannot. Deleting and refunding have no tool and no route. The write scope covers creating a filter, a frame, a booth from a design (and adjusting that draft before it is created), and a copy of a booth, and nothing else; the connector should say so rather than claiming success. The same applies to editing a booth that exists ('change the welcome text on my Bandung booth'): it points at the dashboard, and must not offer refine_booth or update_booth_draft (drafts only) or duplicate_project as a substitute."
+            }
+          ]
+        },
+        "commerce": false,
+        "commerce_description": "Nothing is sold or paid for inside ChatGPT. Booth guests pay on the booth itself, outside this plugin, and no tool here moves money."
+      },
+      "publication": {
+        "release_notes": "Booth design is back (start_booth, refine_booth, get_booth_draft, update_booth_draft, create_booth), run end to end against production first. Every connection sees the same 22 tools, signed in or not, and a generation job survives a token refresh. refine_booth and update_booth_draft are now marked destructive, because they overwrite a draft. connect_account says which of its three answers it gave, and that its sign-in link is Google only. Packaged as a plugin with five skills."
+      },
+      "apps": "./.app.json"
+    }
+  }
+}
Full technical diff · 14 changed fields

changed /files/.app.json/sha256

BEFORE
"761ab967b0c13527758c4f9ccf1f937345a8ae67470fca109b2ede1a702e5175"
AFTER
"5123fa4f2b8989d7ffbe752aa970549ce92aceb2d84d51dd7abe84f83a4ad9af"

changed /files/.app.json/size

BEFORE
127
AFTER
102

removed /files/.codex-plugin~1plugin.json

BEFORE
{
  "sha256": "f3a3f70982e2378453418f4aa0cef8005b5deec1c068b34a5c1b6d090d7a5e33",
  "size": 3251
}
AFTER
Field is absent

added /files/assets~1logo.svg

BEFORE
Field was absent
AFTER
{
  "sha256": "886716601eecae677886f06dff5f28805b1ccb2e405a041394c6aea04cdb31c8",
  "size": 516
}

added /files/assets~1screenshot-01-booth-draft.png

BEFORE
Field was absent
AFTER
{
  "sha256": "a2c82fdcfa35cbc89168cf8ba816a851e8bbdbbf0c7e88235534e5973754c3f2",
  "size": 205362
}

added /files/assets~1screenshot-02-frame-preview.png

BEFORE
Field was absent
AFTER
{
  "sha256": "71464cc38fbfbff1c5a5b9410c2c4e544be8ee1dd8c5abd381feada6948709f5",
  "size": 325323
}

added /files/assets~1screenshot-03-filter-preview.png

BEFORE
Field was absent
AFTER
{
  "sha256": "a8d2403bc7278517ed7a30a106ef7833d94f788ae60dc05b7b174d563154805d",
  "size": 340768
}

added /files/mcp.json

BEFORE
Field was absent
AFTER
{
  "sha256": "0a50ff99b0ed49f2ed3b11fa8b93d07abb414a9cc8af84c004f841bee169fcfb",
  "size": 209
}

added /files/plugin.json

BEFORE
Field was absent
AFTER
{
  "sha256": "6585e86ef386e21fbc70ffee25829924bc713964be3eafff9f131403590fee71",
  "size": 9863
}

added /files/skills~1creating-filters-and-booths~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "7571916aee00958a8ed25ffa720c6ed481a3c22583aeba0a06933faf474fd3a2",
  "size": 11046
}

changed /files/skills~1getting-started~1SKILL.md/sha256

BEFORE
"4a9ac07b4846ed0ca2f807f367049645e9ba11e44cc02f7f293c316c707b81f4"
AFTER
"0937eed320787cf4bef2b4a8ac67a957a4d098542c725ad221023917737fc4b9"

changed /files/skills~1getting-started~1SKILL.md/size

BEFORE
2862
AFTER
3036

changed /files/skills~1revenue-and-earnings~1SKILL.md/sha256

BEFORE
"ef0a0d37a8691b913c4830fcfcc774d0a90c9503b4850e5a8abecf3a300206ab"
AFTER
"e78b79f1cc234e095344acf7f2e42055c3ab70c5c185991a920856f18f0b0b4d"

changed /files/skills~1revenue-and-earnings~1SKILL.md/size

BEFORE
3791
AFTER
3951
Full snapshot data
{
  "files": {
    ".app.json": {
      "sha256": "5123fa4f2b8989d7ffbe752aa970549ce92aceb2d84d51dd7abe84f83a4ad9af",
      "size": 102
    },
    "assets/logo.svg": {
      "sha256": "886716601eecae677886f06dff5f28805b1ccb2e405a041394c6aea04cdb31c8",
      "size": 516
    },
    "assets/screenshot-01-booth-draft.png": {
      "sha256": "a2c82fdcfa35cbc89168cf8ba816a851e8bbdbbf0c7e88235534e5973754c3f2",
      "size": 205362
    },
    "assets/screenshot-02-frame-preview.png": {
      "sha256": "71464cc38fbfbff1c5a5b9410c2c4e544be8ee1dd8c5abd381feada6948709f5",
      "size": 325323
    },
    "assets/screenshot-03-filter-preview.png": {
      "sha256": "a8d2403bc7278517ed7a30a106ef7833d94f788ae60dc05b7b174d563154805d",
      "size": 340768
    },
    "mcp.json": {
      "sha256": "0a50ff99b0ed49f2ed3b11fa8b93d07abb414a9cc8af84c004f841bee169fcfb",
      "size": 209
    },
    "plugin.json": {
      "sha256": "6585e86ef386e21fbc70ffee25829924bc713964be3eafff9f131403590fee71",
      "size": 9863
    },
    "skills/booth-performance-review/SKILL.md": {
      "sha256": "94c7ed0dc1c2fb80c59092182f631e9c94dc6be783f4dbef3356b0152bccbffd",
      "size": 3160
    },
    "skills/booth-troubleshooting/SKILL.md": {
      "sha256": "768a939f1433a9219d01c340bb29d0f95e23f492131bc99db015eceaff35df04",
      "size": 3099
    },
    "skills/creating-filters-and-booths/SKILL.md": {
      "sha256": "7571916aee00958a8ed25ffa720c6ed481a3c22583aeba0a06933faf474fd3a2",
      "size": 11046
    },
    "skills/getting-started/SKILL.md": {
      "sha256": "0937eed320787cf4bef2b4a8ac67a957a4d098542c725ad221023917737fc4b9",
      "size": 3036
    },
    "skills/revenue-and-earnings/SKILL.md": {
      "sha256": "e78b79f1cc234e095344acf7f2e42055c3ab70c5c185991a920856f18f0b0b4d",
      "size": 3951
    }
  }
}

SHA-256 of public snapshot: 7f7e31b43bb39fe56bcbb34310fd8edd2c5dcc907723e333d7f60ea7e7643e95