Inspiration
Assembling a shot list, mood board, or pre-viz pack for a short video means juggling a dozen tabs — an AI image tool, two or three stock sites, a YouTube search, a text-to-speech page, a royalty-free music library — and then renaming every file into numbered folders by hand. Agents are great at the fetching, but curation is visual and iterative: a human has to see the board while it fills up and say "no, swap the hero of scene 2."
WebMCP made a different shape possible. Instead of bolting a chatbot onto a website, the website exposes tools and ChatGPT itself becomes the operator of a live canvas. That reframed the whole product: no in-app chat, no copy-paste — the human watches the board, the agent fills it.
What it does
AssetsCurator is a WebMCP media bin. Open the board in ChatGPT's in-app browser and ChatGPT gains ~23 registered tools to build a shot list scene by scene:
- Generate AI stills, short clips, and audio (voiceover, score, SFX)
- Search & attach royalty-free photos, footage, and music
- Pin YouTube references (links and embeds only, never downloaded)
- Surgically edit — replace a single asset in place, reorder scenes, set roles
- Export a shot-ordered folder (
01-open/,02-pour/…) with audio files, attribution, and.urlshortcuts
Every write tool updates the visible UI before it returns, and the whole board works in 16:9, 9:16, or 1:1. With no agent present, the same actions are plain buttons — progressive enhancement.
How we built it
- Next.js 15 (App Router), TypeScript, Tailwind v4.
- Tools register on the top-level document via
document.modelContext.registerTool(). - A Zustand store is the single shared source of truth (persisted to IndexedDB). The agent's tools and the human's buttons call the same action layer, so their views can never diverge.
- API routes proxy keys and run a free-first fallback router (
firstOk()+ a circuit breaker): each modality has a provider chain that cools a failed source and tries the next, so the board is never empty. - A cinematic prompt layer + higher generation resolution lift AI output from "AI default" to production-looking frames.
- JSZip assembles the shot-ordered export.
Challenges we ran into
- Top-level registration only. WebMCP hosts discover tools registered on the top-level page; iframe and declarative-form approaches didn't surface, which shaped the whole client architecture.
- Free providers are fragile. During the build, HuggingFace retired FLUX from its free serverless inference (HTTP 410), Together's free tier began requiring a paid deposit, and a keyed Pollinations endpoint ran out of credit (402). Rather than chase one "good" provider, we leaned into the circuit-breaker + fallback design — the fragility became resilience.
- Vertical video. Most free image generators emit a fixed square frame; only Pollinations honors arbitrary width/height, so it anchors the 9:16 / 1:1 feature end to end (generation, stock orientation, and display).
- A silent zero-result bug. A Jamendo
includeparameter returned an empty (but "successful") result set and masqueraded as a provider failure until we traced it.
Accomplishments that we're proud of
- A genuinely agent-native UX: no chatbot, the page is the canvas, and single-asset
replace_assetproves the model is doing typed mutation on shared state, not DOM scraping. - Runs end to end on free providers with graceful degradation — a judge with zero keys still gets a full board.
- Conflict-free human + agent co-editing through one optimistic store.
- One-call export that drops straight into CapCut or Premiere.
What we learned
- WebMCP rewards designing tools as verbs over shared state, where every write returns the new project so the agent can verify ids and self-correct.
- Optimistic UI + a single store is what makes human-and-agent co-editing feel live.
- Fallback architecture matters more than any single provider. Assume every free API will fail, quota out, or get deprecated mid-hackathon — and design for it.
What's next for AssetsCurator
- Sequence/timeline export (EDL / Premiere XML) and per-shot duration trims.
- More aspect-native video and a Ken Burns motion pass for stills.
- Collaborative, multi-viewer boards.
- Optional paid-tier providers behind the same router for higher-fidelity generation, with the free chain as the always-on floor.
Built With
- nextjs
- typescript
- webmcp
- zustand
Log in or sign up for Devpost to join the conversation.