Blender MCP + Tripo — Reference Image to Rendered Scene, Driven by Claude
In short: Running this system sets up Blender MCP with a hosted image-to-3D generator and drives it from Claude to turn one reference photo into a rendered Blender scene, with the integration claims checked against the code.
| Key fact | Detail |
|---|---|
| What it covers | 3D, agents, LLM, reference |
| Tools | Blender, MCP, Tripo, Unity, Unreal Engine |
| Posts covered | 1 post (1 S-tier) · top: Blender MCP + Tripo — 2D reference image to… |
| Creators | @bilawal.ai |
| Sources dated | Mar 2025 |
| Prompt system | Run-it-yourself prompts |
| Last verified | 2026-10-22 |
Blender MCP GitHub: https://github.com/ahujasid/blender-mcp
Stars: 18.5k (as of writing) — by far the dominant Blender MCP implementation
License: MIT
Cloned to: ./repos/blender-mcp/ (1.5 MB — pure Python server, no weights)
Tripo: https://www.tripo3d.ai/ | docs: https://platform.tripo3d.ai/docs
What it is
Blender MCP is a Model Context Protocol server that exposes Blender as a set of tools an LLM can call. You run a tiny socket server inside Blender (via an addon) and an MCP server outside Blender that Claude Desktop, Claude Code, Cursor, or VS Code connects to. From then on, Claude can create objects, apply materials, inspect the scene, run arbitrary Python in Blender's context, pull HDRIs and assets from Poly Haven, and — the reason this guide exists — generate 3D models on demand via Tripo (Hyper3D Rodin) or Hunyuan3D and import them into the current scene.
Combined with Tripo's hosted text-to-3D / image-to-3D API, this turns Claude into a functional 3D scene director. You hand Claude a reference photo, say "build me this scene in Blender and render it from a low angle," and watch it happen. It is the closest thing we have in 2026 to a natural-language Blender operator.
The creator (Siddharth Ahuja / @ahujasid) is an independent developer; this isn't a Blender Foundation or Tripo project. It's the de-facto standard because it went viral on X in early 2025 and everyone built on top of it.
How it works under the hood
There are two processes:
- Blender addon (
addon.py) — installed inside Blender, runs a Python socket server bound toBLENDER_HOST:BLENDER_PORT(defaultlocalhost:9876). When a message arrives, it runs the requested Blender Python API call on the Blender main thread and returns the result. - MCP server (
src/blender_mcp/server.py) — a stdio-transport MCP server launched by Claude Desktop / Claude Code. It translates MCP tool calls into socket messages to the addon.
The protocol is simple JSON-over-TCP: a request with type and params, a response with status and result. Because the Blender side runs arbitrary Python, the server is extremely powerful and correspondingly dangerous — save your work before letting an agent drive it.
Tools the server exposes
get_scene_info— list objects, cameras, lights, materialsget_object_info— detailed info on one objectcreate_object— primitives (cube, sphere, plane, cylinder, etc.)modify_object— transform, scale, rotatedelete_objectset_material— assign or create a material with base colorexecute_blender_code— arbitrary Python inside Blender (the escape hatch)get_polyhaven_categories/search_polyhaven_assets/download_polyhaven_asset— free HDRIs, textures, modelssearch_sketchfab_models/download_sketchfab_model— requires API keygenerate_hyper3d_model_via_text/generate_hyper3d_model_via_images— the Tripo/Rodin integrationpoll_rodin_job_status/import_generated_assetgenerate_hunyuan3d_model_via_text/generate_hunyuan3d_model_via_images— local Hunyuan3D-2 bridge
The Hyper3D Rodin endpoint is Tripo's white-labeled API. Blender MCP ships with a free-tier key so you can try it without signing up, rate-limited to a handful of generations per hour. Your own Tripo key removes the limit.
Tripo in one paragraph
Tripo (tripo3d.ai) is the leading hosted text-to-3D / image-to-3D API. Their current model family is P1-20260311 (optimized for clean low-poly output) alongside v3.0 and v3.1 high-detail models. They support text-to-model, image-to-model, and multiview-to-model. Output is GLB with PBR materials, typically 20–60 seconds per generation on their backend. Pricing via fal.ai is roughly $0.20–$0.40 per model; direct Tripo Studio subscriptions start around $10/month for a credit pool. The API is REST: POST a job, poll for status, download the result. Docs at https://platform.tripo3d.ai/docs.
The important thing for this pipeline: Tripo is fast and consistent where Hunyuan3D-2 is slow and local. Use Tripo when iterating on a scene interactively with Claude; use Hunyuan3D-2 (see guides/hunyuan3d-2.md) when you want full local control, custom training data, or no API costs.
System requirements
- Blender 3.0+ (4.x strongly recommended; 4.2 LTS is the sweet spot)
- Python 3.10+ (Blender ships its own Python; the MCP server runs in your system Python)
- uv package manager — mandatory, not optional (install from https://astral.sh/uv)
- Claude Desktop, Claude Code, Cursor, or VS Code with MCP client support
- Tripo API key (optional, but required for unrestricted generation) — https://platform.tripo3d.ai
- Sketchfab API key (optional) for the Sketchfab asset tools
- Local Hunyuan3D-2 install (optional) if you want local generation — see
guides/hunyuan3d-2.md - A GPU helps for rendering scenes but is not required for the MCP plumbing itself
No heavyweight ML runs on your machine unless you opt in to Hunyuan3D-2; Tripo and Poly Haven are hosted.
Quick start
# 1. install uv if you don't have it (see https://astral.sh/uv)
# 2. repo is already cloned at
# ./repos/blender-mcp
# 3. install the Blender addon
# In Blender: Edit > Preferences > Add-ons > Install > pick addon.py
# Enable "Interface: Blender MCP", then in the 3D viewport N-panel
# there's a BlenderMCP tab — click "Connect to MCP server".
# 4. configure Claude Code / Claude Desktop MCP settings with:
# command: uvx
# args: ["blender-mcp"]
# env: TRIPO_API_KEY=tsk_your_key_here
# SKETCHFAB_API_KEY=optional
# 5. restart Claude, start Blender, enable the addon's socket server,
# and ask Claude: "What's in my Blender scene right now?"
If everything works, Claude will call get_scene_info, see an empty scene with a default cube, and happily start building things when you ask.
The full pipeline — reference image to rendered scene
Here's the canonical workflow the blender-mcp + Tripo stack enables. Every numbered step is a natural-language turn you'd give Claude in Claude Code:
- Drop a reference image in your project (say, a photo of a cozy Japanese tea room)
- "Analyze this reference image and list the major 3D objects I'll need to recreate the scene." — Claude reads the image and outputs: tatami floor, low table, tea kettle, shoji screen, hanging lantern, cushion x2.
- "For each object in that list, generate it via Tripo image-to-3D using a cropped region of the reference, and import each result into Blender with a sensible name." — Claude loops, calling
generate_hyper3d_model_via_imagesfor each object, pollingpoll_rodin_job_status, thenimport_generated_asset. - "Lay them out in a plausible room arrangement based on the reference." — Claude calls
modify_objectto position and rotate. - "Download a warm evening interior HDRI from Poly Haven and set it as the world background." —
search_polyhaven_assets→download_polyhaven_asset. - "Add a camera at human eye level, looking at the tea table, and set the Cycles render settings to 512 samples." — via
execute_blender_code. - "Render." — via
execute_blender_codecalling the Blender render operator. - Iterate. Claude can see the result via a screenshot tool and adjust.
The whole loop, end to end, is doable in 5–15 minutes with Tripo on a decent internet connection. The same pipeline with manual Blender work would take a skilled artist hours.
Where it breaks down
- Object segmentation from a single reference is the weak link. Claude cropping regions of the image is usually "good enough" but precise silhouettes help; feed Claude pre-cropped images for hero assets.
- Scale. Tripo meshes come in arbitrary units; Claude will fight to normalize them. Tell it "assume 1 Blender unit = 1 meter" up front.
- Materials. Tripo/Rodin outputs have baked PBR, which is great, but they may not match your scene lighting. Expect a round of
set_materialtweaks. - Topology. These are game-ready but not production film meshes. For feature work, use the new P1 low-poly model and retopologize manually.
Useful prompts to drive it from Claude Code
- "Inspect the current Blender scene and tell me what's already there."
- "Clear the scene, then build a simple chess set: an 8x8 board, 32 pieces, generated via Tripo text-to-3D with appropriate prompts, arranged in the starting position."
- "Here's a photo of my desk (attached). Recreate it in Blender. Use Tripo for any object that isn't a trivial primitive."
- "Generate a low-poly medieval village: 5 houses, a well, a church, a market stall. Use Tripo's P1 low-poly model. Scatter them on a grass plane with a Poly Haven dawn HDRI."
- "I need a hero render for a product page. The product is in this image. Generate the mesh with Tripo, put it on a reflective pedestal, three-point studio lighting, render at 4K with Cycles."
Claude is surprisingly good at all of these once the MCP connection is live. The bottleneck is your patience and your Tripo quota, not the tooling.
What we could build with it
- Prompt-driven scene builder for previs and storyboarding
- Product visualization service — customer uploads a photo, your worker builds a Blender scene with Tripo and renders it from 12 angles
- Game level blockout tool — describe a level, Claude builds a rough Blender scene, export to Unity/Unreal for polish
- Architectural quick studies — feed a floorplan + mood image, get a rendered 3D room
- Educational 3D generator — teachers describe an anatomy/history/chemistry scene, get a ready-to-project Blender file
- Asset library builder — batch-generate 500 props via Tripo and auto-organize them in a Blender asset library
- The "text to 3D printer" loop — Claude generates a mesh via Tripo, imports to Blender, runs a manifold check, exports STL, slices with PrusaSlicer via another MCP server
Related resources
- Hunyuan3D-2 guide:
guides/hunyuan3d-2.md— the local alternative to Tripo for the same pipeline, exposed via the same MCP server - HY-Motion (text-to-motion):
./repos/HY-Motion-1.0/— animate the characters Tripo generates - World Labs (Marble) guide:
guides/world-labs-3d-generation.md— the closed-source alternative that generates entire worlds instead of single objects - TouchDesigner creative coding:
./guides/touchdesigner-creative-coding.md— feed Blender renders into TD for real-time VJ/installation work - Design stack setup:
./tools/setup-design-stack.sh— if you want a web UI fronting this pipeline
Sources
- Blender MCP GitHub
- Tripo API docs
- Tripo site
- Tripo3D v2.5 on fal.ai
- KGP Talkie: Blender MCP + Hunyuan3D setup
Prompt system — run this yourself
Everything below is pasteable into Claude Code, Claude, or any agent. Use the one-shot when you want the whole result in one run; use the step prompts when you want to steer. Every step carries its own audit, and the gap audit at the end makes the agent find and fill what it missed.
Mission. Running this system sets up Blender MCP with a hosted image-to-3D generator and drives it from Claude to turn one reference photo into a rendered Blender scene, with the integration claims checked against the code. It produces a working MCP connection, a scripted reference-to-render run with every generated asset named, scaled to metres and logged, and a render compared against the reference. It is for a creator who wants a natural-language 3D operator. Done means the scene opens and renders headless in Blender 4.2 without errors, every asset has a provenance row, and a blind comparison rates the layout as matching the reference.
1 · Deeper, not bigger
Before running anything, make the task deeper rather than larger. Ask: what would a top professional do here that I am not asking for; what is the rawest material; which methods and tools; what, other than the model or me, proves it right. Then ask for exactly that.
- What a top professional would do (that you didn't ask for): A 3D generalist would match the camera first: recover focal length and camera pose from the reference photo with fSpy, set real-world units, and build to that camera instead of guessing a layout. They would block out with primitives before generating any asset, generate only hero objects, and check each generated mesh for scale, polycount, non-manifold edges and applied transforms before placing it. They would light from an HDRI that matches the reference's time of day, render with Cycles plus denoising, and compare the render to the reference side by side. They would also read what the MCP server actually exposes, because the guide's claims about which generator sits behind which tool may be wrong.
- Rawest material to start from: 1) The blender-mcp repository by ahujasid: addon.py and src/blender_mcp/server.py, read for the actual tool list, the socket protocol on localhost:9876, and which 3D generation providers are wired in. 2) Tripo's API documentation at platform.tripo3d.ai/docs: task creation, polling, output formats, model versions, pricing. 3) Hyper3D Rodin's own documentation, to establish who operates it. 4) Poly Haven's API for HDRIs and textures. 5) Blender 4.2 LTS Python API docs for import, units, render and the bmesh module. 6) fSpy and its Blender importer. 7) The reference photo at full resolution.
- Methods and tools: Blender 4.2 LTS; uv and uvx to run the blender-mcp server; Claude Code as MCP client; the addon's socket server; execute_blender_code for anything the tools lack; Tripo's REST API called from a small Python helper or from execute_blender_code, with TRIPO_API_KEY read from environment; glTF import via bpy.ops.import_scene.gltf; bmesh checks for non-manifold edges and loose geometry; Decimate modifier or Blender's remesh for polycount; scale normalization by bounding-box height against a known real size; fSpy camera import; Poly Haven HDRI; Cycles with OpenImageDenoise; blender -b scene.blend -f 1 for headless render; SSIM or LPIPS between render and reference for a rough layout score; a provenance CSV per asset.
- What proves it right (other than you or the model): Blender 4.2 opening the saved .blend and rendering frame 1 headless with no errors in the log. The provider's own job records (Tripo task IDs) matching the asset provenance file. A blind two-alternative comparison where viewers pick which of two renders better matches the reference. A mesh audit script reporting zero non-manifold edges and correct real-world dimensions for each hero asset.
Rewritten prompt — ask for exactly that:
I want Claude to turn a reference photo into a rendered Blender scene through Blender MCP and a hosted image-to-3D API. Act as a 3D generalist. First read the blender-mcp source (addon.py and src/blender_mcp/server.py) and list the actual tools and 3D generation providers it supports; the guide says Hyper3D Rodin is Tripo white-labeled, so verify that against both vendors' docs, and if Tripo is not wired in, call Tripo's REST API through a small helper. Then: (1) match the camera from the photo with fSpy and set units to metres; (2) block out the scene with primitives; (3) list hero objects and generate only those via image-to-3D from tight crops, logging task IDs, cost and time; (4) import each asset, normalize scale to a real-world height, apply transforms, check non-manifold edges and polycount; (5) light with a Poly Haven HDRI matching the photo, render in Cycles with denoising; (6) save the .blend and prove it renders headless in Blender 4.2. Compare the render with the reference side by side and by a blind pick. Read API keys from environment only, never print them, and save the scene before any execute_blender_code call.
2 · One-shot prompt
ROLE AND STANCE
You are a 3D generalist operating Blender through MCP from Claude Code. You build to the reference camera, generate only what primitives cannot do, and check every generated mesh before it enters the scene. You verify the guide's claims against the code before relying on them.
CONTEXT
- blender-mcp (ahujasid, MIT): an addon runs a socket server inside Blender on localhost:9876; an MCP server launched by uvx blender-mcp translates tool calls to JSON over TCP. Tools listed by the guide include get_scene_info, get_object_info, create_object, modify_object, delete_object, set_material, execute_blender_code, Poly Haven search and download, Sketchfab search and download, generate_hyper3d_model_via_text and via_images, poll_rodin_job_status, import_generated_asset, and Hunyuan3D generation.
- The guide claims the Hyper3D Rodin endpoint is Tripo's white-labeled API and that a free-tier key ships with the server. Public materials suggest Hyper3D Rodin is a separate vendor's product. Treat both as unverified.
- Tripo: hosted text-, image- and multiview-to-3D, GLB with PBR, 20-60 s per generation per the guide, about 0.20-0.40 USD per model via fal.ai, model family named P1-20260311 plus v3.0 and v3.1. Unverified until checked in Tripo's docs.
- The guide's known weak points: single-image segmentation, arbitrary scale ('assume 1 Blender unit = 1 metre'), baked PBR not matching scene light, game-ready not film topology.
- execute_blender_code runs arbitrary Python inside Blender. Save first.
HARD CONSTRAINTS
- API keys from environment only; never echo, log or commit them.
- Save the .blend before each execute_blender_code call; keep numbered versions.
- Units: metric, 1 unit = 1 metre, set before any import.
- At most 8 generated assets per scene; everything else is primitives, Poly Haven assets or reuse.
- Every asset gets a provenance row: name, source (Tripo task ID, Poly Haven ID, primitive), prompt or crop file, cost, generation time, licence.
DELIVERABLES, IN ORDER
1. tools.md: the tool list and providers from server.py and addon.py, with file and line references, and the verdict on the Rodin-equals-Tripo claim.
2. setup.md: Claude Code MCP config (command uvx, args blender-mcp, env names only), addon install steps for Blender 4.2, a get_scene_info round trip.
3. camera/: fSpy project and imported camera matching the reference.
4. blockout.blend: primitives placed to the camera.
5. assets/: crops, generated GLBs, provenance.csv, mesh_audit.csv (dimensions, polycount, non-manifold count).
6. scene.blend: assets placed, HDRI lit, Cycles with denoising, render.png.
7. compare/: reference and render side by side, an SSIM or LPIPS score, and a blind pick result.
GAP ANALYSIS (BUILT IN)
Keep gaps.md: which provider the generation tools actually call; whether a bundled free key exists and its limits; Tripo model names, prices and speeds measured versus claimed; assets that failed or needed manual fixes; materials changed after import; anything execute_blender_code did that the named tools could not. Fill what you can now.
SELF-QUESTIONS
- Does the camera match the reference before I place anything?
- Is each asset's height right in metres?
- Did any generated mesh arrive with unapplied rotation or scale?
- Do the generated materials fight the HDRI lighting?
- Could a primitive or Poly Haven asset have replaced any generated one?
STOP CONDITIONS
Stop and report if the MCP round trip fails after two fixes, if no generation provider works without a key the user lacks, or if spend passes 5 USD. Otherwise stop when all seven deliverables exist.
RETURN FORMAT
Table of deliverable, path, status; tool and provider verdict; asset count, total cost and time; headless render result; comparison score and blind pick; top five gaps.
3 · Step-by-step prompts
Step 1 — Ground truth: read the server and vendor docs
Goal: Know what the MCP server really exposes and which vendor generates the models.
Clone github.com/ahujasid/blender-mcp (pull latest if you already cloned it to ./repos/blender-mcp/). Read addon.py and src/blender_mcp/server.py.
1. List every MCP tool with its parameters, the socket host and port, and what each tool sends to the addon. Cite file and line.
2. For the 3D generation tools, find the HTTP endpoints they call and the environment variables they read. Determine whether they call Tripo, Hyper3D Rodin's own vendor, fal.ai, or something else.
3. Check whether a default or free-tier key is embedded, and its stated limits. Do not print key values.
4. Read Tripo's API docs: task creation for image-to-model, polling, output formats, current model version names and prices. Read the Hyper3D Rodin docs to identify its operator.
5. Write tools.md with a verdict on the guide's claims: 'Hyper3D Rodin is Tripo's white-labeled API', 'ships with a free-tier key', 'P1-20260311 model', '0.20-0.40 USD per model via fal.ai'.
Expect: tools.md with cited tool table, provider verdict and claims table.
Audit before moving on: Every tool and provider statement cites a file and line or a doc URL. If Tripo is not wired in, plan a helper for step 4 instead of forcing a mismatched tool.
Step 2 — Install and round-trip
Goal: Get Claude Code talking to Blender reliably.
Install uv. In Blender 4.2 LTS: Edit > Preferences > Add-ons > Install, choose addon.py, enable it, open the BlenderMCP tab in the N-panel and start the server. Configure Claude Code's MCP settings with command uvx, args blender-mcp, and env entries TRIPO_API_KEY and any other provider key, set from your shell environment, not pasted into the config file if your client supports env passthrough.
Restart Claude Code and ask: 'What is in my Blender scene right now?' Confirm get_scene_info returns the default cube, camera and light.
Then test each tool once on a throwaway scene: create a cube, move it, set a material, search Poly Haven for an HDRI, and run execute_blender_code that prints bpy.app.version. Record latency for each call.
Set scene units to metric with unit scale 1.0 and save as template.blend.
Expect: setup.md with config (key names only), a tool test table with latency, template.blend.
Audit before moving on: If any tool call hangs, check the addon is on the main thread and the port matches. Grep the config and logs for key values; any found must be removed and the key rotated.
Step 3 — Camera match and blockout
Goal: Build to the reference camera with primitives before generating anything.
Open the reference photo in fSpy. Mark two vanishing directions along obvious edges (table edges, floor lines) and set a known reference distance, such as a door height or table height. Export and import the fSpy project into Blender with the fSpy importer, giving a camera with matching focal length and pose. Set the reference as the camera background image.
Ask Claude, through the MCP tools, to list the major objects in the photo with an estimated real height in metres for each. Then block out each object with a primitive of that size, placed so it lines up with the photo through the camera view. Name objects clearly (table_low, cushion_left).
Render a quick Eevee preview from the matched camera with 50% opacity overlay of the reference.
Expect: camera/ fSpy files, blockout.blend, overlay preview PNG, objects.csv with names and heights.
Audit before moving on: In the overlay, the blockout's main edges should sit within a few percent of the image width of the photo's edges. If not, redo the fSpy calibration before generating assets.
Step 4 — Generate hero assets
Goal: Generate only objects primitives and libraries cannot cover, with full provenance.
From objects.csv choose at most 8 hero objects. For each, crop the reference tightly around the object, or provide a clean product photo if you have one, and save the crop in assets/crops/.
Call the image-to-3D path verified in step 1: the MCP generation tools if they reach the intended provider, otherwise a small Python helper calling Tripo's REST API with TRIPO_API_KEY from environment (create task, poll, download GLB). Record task ID, model version, start and end time, and cost in provenance.csv.
For anything a Poly Haven model covers adequately, use that instead and record its ID and licence.
Track total spend and stop at 5 USD.
For the first asset, generate twice from the same crop to see run-to-run variation, and once from a text prompt alone, so you know whether image conditioning is worth the cropping effort. Record Tripo's licence terms for generated models in provenance.csv.
Expect: assets/ with GLBs, crops, provenance.csv covering every asset.
Audit before moving on: Every GLB has a provenance row with a task ID. Compare measured generation time and cost with the guide's 20-60 s and 0.20-0.40 USD claims and record the difference in gaps.md.
Step 5 — Import, normalize and audit meshes
Goal: Make every asset scene-ready before placing it.
Save the .blend with a version number. Then, with execute_blender_code, for each GLB: import with bpy.ops.import_scene.gltf, join parts into one object, apply rotation and scale, set origin to the bottom centre, scale uniformly so its height equals objects.csv's real height, and rename it.
Run a bmesh audit per object: vertex and face count, non-manifold edge count, loose vertices, dimensions in metres. Write mesh_audit.csv. Decimate any object above 100k faces to a target you state.
Replace the matching blockout primitive with the asset, copying its location and rotation. Check materials: if baked lighting in the base colour clashes with scene light, reduce it by lowering texture contrast or switching to a neutral material for that object, and log the change. Put all generated assets in a 'generated' collection so they can be hidden for comparison.
Expect: scene_v*.blend files, mesh_audit.csv, a material changes log.
Audit before moving on: All hero assets have applied transforms (scale 1,1,1) and real-world heights within 5%. Any non-manifold count above zero is either fixed or justified in gaps.md.
Step 6 — Light, render, compare
Goal: Produce the final render and measure how close it is.
Use the Poly Haven tools to search and download an HDRI matching the reference's light (time of day, indoor or outdoor, warm or cool) and set it as the world. Add one area light only if the reference has an obvious key light the HDRI lacks.
Set Cycles, 512 samples, OpenImageDenoise, resolution matching the reference aspect ratio, and render from the fSpy camera. Save render.png and scene.blend.
Compare: place reference and render side by side, compute SSIM on downscaled greyscale versions and LPIPS if available. These are rough layout scores, not quality judgments.
Make a second render with the blockout only, and run a blind pick with at least 5 people: show the reference plus the two renders unlabeled, ask which matches better.
Expect: render.png, scene.blend, compare/ with side by side, scores, blind pick results.
Audit before moving on: If the final render loses the blind pick to the blockout, the generated assets hurt the scene; record which ones and why.
Step 7 — Validate against oracles and write the gap report
Goal: Prove the scene is portable and record what remains unverified.
1. Close everything and run blender -b scene.blend -f 1 with Blender 4.2 headless. Confirm the log shows no missing textures, no errors and that the frame was written.
2. Pack external files (File > External Data > Pack Resources) and repeat on a second machine or clean user profile if you can.
3. Reconcile provenance.csv with the provider's own task history.
4. Re-run the mesh audit on the final file.
5. Write gaps.md: each guide claim from tools.md with verified / unverified / false; measured versus claimed speed and cost; assets that needed manual fixes; tools that failed; anything done only through execute_blender_code. Fix what you can now and list the rest.
6. Record total wall-clock time from reference photo to final render and compare it with the guide's '5-15 minutes with Tripo' claim.
Expect: headless_render.log, a packed scene.blend, validation.md, gaps.md.
Audit before moving on: A headless render warning about missing files fails the step until packed. Confirm no API key value appears in the .blend's text blocks, scripts or logs.
4 · Gap analysis and audit
Run this after the build. It makes the agent enumerate its own claims, mark what is verified, rank the gaps and fix the top ones.
You are auditing a Blender MCP reference-to-render project you did not build. Read tools.md, setup.md, objects.csv, provenance.csv, mesh_audit.csv, compare/, validation.md and the final scene.blend.
1. List every claim: tool list, provider identity, free key, model names, speed and cost, asset dimensions, render result, blind pick.
2. Mark each verified, unverified or false with evidence: a file and line, a task ID, an audit row, a log line.
3. Re-check: units are metric at scale 1.0; every asset has applied transforms and a provenance row; spend stayed under the cap; the .blend renders headless in Blender 4.2 with packed resources; no API key value is stored in the .blend, configs or logs; saves preceded each execute_blender_code call.
4. List missing pieces: licences for generated assets, retopology for production use, animation readiness.
5. Rank gaps by impact on whether someone else can open and render the scene.
6. Fix the top three now.
7. Report what you could not fix and why.
Questions the agent must ask itself before it says done:
- Which vendor do the generate_hyper3d tools actually call, according to server.py?
- Is there a bundled key, and am I relying on someone else's quota?
- Did I match the camera with fSpy before placing anything?
- Is every asset's height correct in metres, with transforms applied?
- Which generated assets could have been primitives or Poly Haven models?
- Do baked PBR colours fight my HDRI lighting?
- Did I save before every execute_blender_code call?
- Does the scene render headless with no missing files?
- Does the final render beat the blockout in a blind pick?
- What did the generation actually cost and how long did it take, against the guide's claims?
5 · What proves it right
- Blender 4.2 LTS headless: blender -b scene.blend -f 1 completes with no errors or missing-file warnings after packing resources.
- The generation provider's task history: task IDs, versions and costs matching provenance.csv.
- A bmesh audit script: zero unexplained non-manifold edges and real-world heights within 5% for all hero assets.
- At least 5 blind viewers choosing the final render over the blockout as the better match to the reference.
- The blender-mcp source: tool and provider claims traced to file and line.
6 · Failure modes
- Wrong provider assumption. Tell: generation tools return errors about keys for a different vendor. Fix: read server.py, then use the right key or a Tripo helper.
- Scale chaos. Tell: a cup as tall as the table. Fix: metric units first, normalize each asset by real height, apply transforms.
- Layout drift. Tell: render looks right from nowhere in particular. Fix: fSpy camera match and blockout before generation.
- Lost work from arbitrary code. Tell: a crashed Blender after execute_blender_code. Fix: versioned saves before each call.
- Material clash. Tell: objects look pasted in. Fix: reduce baked lighting, match HDRI, use neutral materials where needed.
- Key leak. Tell: key visible in MCP config or a Blender text block. Fix: environment variables only, rotate any exposed key.
- Over-generation. Tell: spend climbs on assets nobody sees. Fix: cap at 8 hero assets and 5 USD.
7 · Agent direction (unattended runs)
Start by reading server.py and addon.py; the provider question decides the rest of the pipeline. Cache downloaded GLBs, HDRIs and crops under assets/ so retries do not regenerate or re-bill. Keep Blender operations in the main loop, since they share one scene; a sub-agent may do the fSpy calibration and the vendor-docs reading in parallel. Save a numbered .blend before every execute_blender_code call. Stop and ask before spending past 5 USD, before adding a paid Sketchfab key, and when a provider requires an account the user has not set up. Never print or store key values. If an MCP call hangs twice, restart the addon server rather than retrying blindly. Return README.md linking tools.md, setup.md, camera/, assets/provenance.csv, mesh_audit.csv, scene.blend, render.png, compare/, validation.md and gaps.md, each with a one-line status.
Prompt system updated 2026-10-22 · all prompt systems · JSON