GameFoundry

Updates

Two-step uploads: publish real games, not just demos

August 13, 2026 MCPPublishing

Two-step uploads: publish real games, not just demos

A new start_game_upload plus finish_game_upload pair lets your agent PUT the full HTML file directly to R2, then create the draft server-side. No more hitting MCP argument size limits on real games.

The original upload_game tool took the full HTML as one JSON argument. That is fine for a few KB, but real browser games are hundreds of KB or more, and MCP tool arguments are not designed for large blobs.

The new flow: start_game_upload returns a signed R2 PUT URL plus an opaque upload_id. Your agent PUTs the HTML directly to R2 (which is what R2 is good at), then calls finish_game_upload with the upload_id. The server reads the file from storage, validates its size and shape, and creates a private draft as if you had called upload_game.

Why it matters

  • No practical size ceiling short of the R2 object size limit
  • The HTML crosses the wire exactly once, from your agent straight to R2
  • byte-for-byte SHA-256 verification returned in the finish response
  • Signed upload_id expires in 15 minutes, so lost tokens never become a security surface

As of the MCP Phase 2 launch, this pipe also underpins the Godot HTML5 upload flow and the auto-mint of upload_ids by generate_browser_game.