MCP server

Your agent asks for a prop.
It gets a compliant file.

The headless asset factory for your agent: remote MCP over streamable HTTP with bearer-key auth. No install, no local process, no Studio session required. Tool descriptions carry the Roblox rules (tri limits, style guidance, when to validate), so the model picks correctly without you prompting it. The tool surface is the UI.

Where this fits

Complements Roblox Studio's own MCP server

Studio MCP (official, free)

Drives a live Studio session from your agent: edit scripts, insert instances, playtest, capture screenshots, and generate meshes in-place with generate_mesh. The right tool when Studio is open and the agent works inside your place.

studmill MCP (this server)

Runs with no Studio session at all: CI jobs, servers, batch prop sets, or a laptop where Studio isn't open. Every asset arrives with a measured compliance receipt (triangles vs budget, stud dimensions, pivot, maps) and a Studio-importable .zip. Generate here, then place and verify in Studio with the official tools.

Tool reference

generate_asset

Arguments

prompt, style, tri_budget, variants

Returns

generation_id (instant), poll until completed

Creates the generation and returns immediately, so long renders never time out. Styles: low-poly (fits the 10k triangle budget), blocky, stylized-pbr. 1–4 variants per call; each variant counts against quota.

generate_variants

Arguments

prompt, variants, style, tri_budget

Returns

generation_id (instant), 2–4 tracked variants

Runs 2–4 versions of one prompt through the full pipeline. The generation stays active until every requested variant is delivered; each variant counts individually against quota.

get_generation

Arguments

generation_id

Returns

status, warnings, per-variant stats + download URLs

The poll half of generate_asset. Completed responses include triangle count, size in studs and both the GLB and the Roblox Studio .zip URL for every variant. Failed generations return the provider error.

validate_roblox

Arguments

generation_id

Returns

per-variant compliance receipt

Checks a StudMill generation against the 10k performance target and reports measured triangles, a mobile invisibility risk flag, dimensions in studs, embedded base-color texture, and bottom-center normalized Roblox export availability. It validates generated assets, not local-disk files.

list_generations

Arguments

—

Returns

your 50 most recent generations

Id, prompt, style and status, newest first, so an agent can pick up where it left off after a restart.

download_asset

Arguments

generation_id, variant

Returns

GLB + Roblox Studio .zip URLs, tri count, size in studs

Returns the file URLs: a GLB for engines/viewers and a .zip with an OBJ bundle that has a bottom-center pivot and imports straight into Roblox Studio. Fetch the file with your own file tools.

Roadmap

  • upload_to_roblox: Open Cloud upload, rbxassetid:// in return
  • list_assets: reuse your library instead of regenerating
  • check_mesh: run the /tools/check-mesh diagnosis (triangles, studs, pivot, mobile risk) from your agent on any GLB/OBJ URL

Setup

Generate your config

Pick your client, optionally paste your key (it never leaves this browser, stored in localStorage only), and copy the ready-made config. Create your key in the Studio. Every account gets one, free accounts included.

Both headers work: Authorization: Bearer sm_live_… (the MCP standard, used below) or x-api-key: sm_live_…. Use x-api-key if your client or a proxy rewrites the Authorization header.

{
  "mcpServers": {
    "studmill": {
      "type": "http",
      "url": "https://studmill.com/api/mcp",
      "headers": {
        "Authorization": "Bearer sm_live_YOUR_KEY"
      }
    }
  }
}

paste into your MCP client config

Your token

Get your MCP key

Keys are managed in the Studio, next to your generations. Keys are hashed on our side, so the full value is shown once, right after you create it.

Checking session…