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 .url shortcuts

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 include parameter 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_asset proves 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

Share this project:

Updates