Comeback agent plugin walkthrough video
Source of the illustrated walkthrough submitted with the Comeback ChatGPT/MCP plugin (plugins/comeback) for OpenAI's plugin review. It renders a silent, captioned 1920×1080 MP4 of 3:21 to landing/public/images/videos/comeback-plugin-walkthrough.mp4, which the landing site serves at https://comebackloyalty.com/images/videos/comeback-plugin-walkthrough.mp4 once it deploys.
The video is an animation of the plugin's expected behavior with sample data. It is not a recording of live tests, ChatGPT or a production account. An opening disclosure says so and the "Illustrated walkthrough · sample data" badge stays on screen in every chat scene.
Render
From the repository root, with Google Chrome and ffmpeg installed:
node landing/video-src/mcp-plugin/render.cjs video landing/public/images/videos/comeback-plugin-walkthrough.mp4
node landing/video-src/mcp-plugin/render.cjs still 77 /tmp/frame.jpgOpening index.html in a browser plays a preview (space pauses, arrow keys seek, ?t=77 starts at 77 s). In that page, window.TIMINGS() returns the start and end of every section and how long each completed result stays still before the next item appears.
Files
index.htmlholds the storyboard:SCENESlists each scene's prompts, tool calls, answers, captions and clicks, with times relative to the scene, andORDERsets the sequence and the length of the title sections.components.jsbuilds the chat panel, the tool cards and the browser pages.styles.cssstyles them.render.cjscaptureswindow.renderFrame(t)frame by frame with Playwright and pipes the frames to ffmpeg.
Sources of truth
- Tool names, inputs and results:
server/src/mcp/tools.js. - Account linking:
server/src/mcp/auth.jsandroutes.js,admin/src/components/LoginPage.vueandAgentConnectPage.vuewith the English locale. - Review prompts and expected behavior:
plugins/comeback/plugin.jsonandplugins/comeback/README.md. - Draft handoff:
admin/src/components/CampaignEditor.vue.
Readability rules
- Sized for 960×540 viewing: prompts are 36 px, tool names 34 px, result values 32 px and captions 34 px at 1080p.
- One focal point per beat: a prompt, a tool result or an answer. A single caption line states the outcome once the result has fully appeared.
- No side cards, raw JSON, UUIDs or footnotes. Tool results are labelled summaries of the fields
tools.jsreturns. - Every completed tool result stays still for at least 3.2 s before anything new appears, measured from the later of its fade-in and the chat scroll. The consent screen is fully visible for 8.1 s, the proposed WhatsApp message stays still for 9.8 s before the user confirms, and the final draft for 11.2 s.
Scenes and coverage
| Time | Scene | Tools shown | Outcome on screen |
|---|---|---|---|
| 0:00 | Intro | Comeback plugin for ChatGPT and other MCP clients | |
| 0:04 | Disclosure | Illustrated animation of expected behavior, sample data, no real customers, credentials or tokens | |
| 0:10.8 | Account linking | Comeback sign-in, then the real consent text: no feature scopes, existing permissions, no session token for the agent | |
| 0:34.4 | Positive 1 | list_organizations | Only the account's organizations, with locations and permissions; no credentials or location tokens |
| 0:49.4 | Positive 2 | list_organizations, search_customers, get_customer | Two customers named Ana, so the agent asks; then contact details and 120 points, within allowed passes |
| 1:10.4 | Positive 3 | list_organizations, get_report | September 2026 aggregates in cents and UTC dates; the agent converts cents to euros; no individual orders |
| 1:24.2 | Positive 4 | list_organizations, create_segment | "Inactive 60 days" with lastVisitDate · minimumDaysSinceDate · 60 and a new request ID; the returned segment ID and admin.comeback.es/segments link; a retry with the same request ID returns the same segment |
| 1:39.0 | Positive 5 | list_organizations, list_segments, create_campaign_draft | The agent proposes a subject and message and asks first; the WhatsApp draft is saved, not sent or scheduled, with its editor link; a retry returns the same draft |
| 2:09.2 | Also covered | list_campaigns, get_campaign_performance | Latest sent campaign and its aggregate results, no recipient lists |
| 2:24.6 | Guardrails title | Permissions are checked on every call | |
| 2:27.2 | Negative 1 | get_customer | MCP_ORGANIZATION_ACCESS_DENIED, no customer data |
| 2:39.0 | Negative 3 | list_organizations, get_report | MCP_LOCATION_ACCESS_DENIED, no report data; the agent asks for an authorized location |
| 2:51.6 | Negative 2 | none | No tool is called; the agent points to the admin panel, which shows the WhatsApp draft still unsent; Send is never clicked |
| 3:11.2 | Recap | all nine | The nine tool names and the three guardrails |
| 3:17.2 | Outro | comebackloyalty.com |
Illustrated details
- The chat window is a neutral, simplified client, not ChatGPT's interface.
- The consent page names "ChatGPT" and
https://chatgpt.comas the requesting client for illustration. The real page shows the client name and redirect origin that the client registered. - The campaign editor's live preview is drawn as a WhatsApp message labelled "Draft · not sent" so the channel is unmistakable. The real editor shows a generic notification card for WhatsApp.
- Organization, customer, campaign names and figures are invented. Emails use
example.comand the account uses the reserved.exampledomain. The password field only shows dots.
Validation
The committed MP4 was rendered with render.cjs (6,042 frames at 30 fps) and checked from the encode itself:
- ffprobe reports H.264, yuv420p, 1920×1080, 30 fps, 201.4 s and 10.8 MB, and a full
ffmpeg -v error -i … -f null -decode reports no errors. - Frames were extracted from the encode for every completed result, every agent answer and both sides of every section boundary, at full size and at 960×540. A frame from each scene and the transitions were reviewed by eye, and all of them were checked numerically as below.
- For each hold listed by
window.TIMINGS(), the first and last frames of the hold differ by at most 0.31/255 in mean luma inside the chat area, which is encoder noise. The consent and draft screens differ only where a highlight ring appears. - Hold timings, measured from the later of the fade-in and the scroll:
list_organizations4.0 s,search_customers3.7 s,get_customer3.7 s,get_report3.9 s,create_segment4.4 s,list_segments3.5 s,create_campaign_draft4.0 s,list_campaigns3.2 s,get_campaign_performance3.7 s, deniedget_customer3.9 s, deniedget_report3.8 s.
