Sceneplane
Yapay zeka ajanları için bulut Blender: kalıcı projeler, değişmez revizyonlar, güvenli sahne işlemleri, render'lar, MP4, STL ve GLB, barındırılan uzak MCP üzerinden.
Dokümantasyon
Documentation
Sceneplane gives AI agents isolated Blender compute in the cloud: durable projects, versioned scene state, and asynchronous rendering — through one remote MCP endpoint. Every output is yours to download: renders, GLB/OBJ/STL exports, and the.blend project files. Everything below applies equally to agents and to humans driving the dashboard.
Quickstart
- Sign up, then create and copy an API key from sceneplane.online/app (Home → API keys, or the Step 4 modal).
- Connect a header-capable MCP client to
https://mcp.sceneplane.online/v1with the key as a bearer header:
{
"mcpServers": {
"sceneplane": {
"url": "https://mcp.sceneplane.online/v1",
"headers": { "Authorization": "Bearer <YOUR_API_KEY>" }
}
}
}
- Run
platform_statusto confirm the deployment is ready and its current policy limits. - Create a project. A fresh account gets a Personal organization and a default deployment provisioned automatically on the first call — no clicking required.
Authentication
API keys (for header-capable clients)
Keys look like sp_…, are created in the dashboard, shown exactly once, and stored server-side only as a SHA-256 hash. Revoking a key locks it out on its next request. A key acts as your account: its permissions in each deployment follow your organization role (owner, admin, editor, viewer).
OAuth (for OAuth-capable connectors)
Web-based connectors (for example Claude web custom connectors) run OAuth authorization-code + PKCE instead — against the same URL: add https://mcp.sceneplane.online/v1 with no Authorization header and leave the client ID empty (dynamic registration is supported). You will be redirected to sign in and pick the deployment the connector is bound to during consent.
Deployments & binding
A deployment is an isolated Blender compute environment with its own policy, budget, and projects. Each MCP request binds to one deployment:
- one deployment on the account → bound automatically;
- none → a default deployment is provisioned on first call;
- several → the most recently updated is bound; pin explicitly with
https://mcp.sceneplane.online/v1?deployment=<slug>(seedeployments_list).
Tool catalog
Scene & project tools (deployment-scoped)
| Tool | What it does |
|---|---|
projects_list | List Blender projects in the bound deployment (cursor pagination). |
project_create | Create a project from a template (empty, product_studio, three_point_lighting, low_poly, print_ready); returns the async init job. |
project_get | Project detail: head revision, recent revisions, active jobs, preview artifact. |
scene_inspect | Structured scene summary of a revision: objects, materials, cameras, lights, stats. |
scene_apply | Apply a validated batch of scene operations against the head revision; commits a new immutable revision (async job). |
scene_validate | Validate a revision against a profile (general, render, game_asset, three_d_print). deep=true runs real mesh analysis in Blender — watertightness, overhangs, and a 3D-print report with dimensions, volume, filament estimate, and bed fit. |
scene_snapshot | SEE the scene: the current revision's thumbnail (or any render/turntable frame) returned as an actual inline image — verify visually after every change, no render job needed. |
scene_script | Run arbitrary Blender Python (bpy) against a revision, committing the result. Disabled by default — an owner enables scripting per deployment (Settings → Policy). Runs in an isolated, credential-free container. |
docs_bpy_lookup / docs_bpy_search | Authoritative Blender Python API reference as tools — agents verify bpy signatures, members, and enums before writing scene_script code, with namespace discovery and did-you-mean suggestions. |
docs_manual_search / docs_manual_get | Full-text search over the entire Blender user manual (2,100+ pages) — conceptual answers about how modifiers, shading, physics, and workflows behave, with ranked snippets and full-page reads. |
asset_preview / assets_categories | See an asset's thumbnail as an actual image before importing, and browse Poly Haven categories with counts. |
assets_search | Search free asset sources by keyword: Poly Haven CC0 (HDRIs, PBR texture sets, models — no setup) or Sketchfab downloadable models (BYO token). Returns slugs for asset_library_import. |
asset_library_import | Import a library asset by slug: HDRIs become the world environment, models are added to the scene, texture sets become a wired PBR material you can auto-assign to objects (async job). Sources: polyhaven, sketchfab, hyper3d, hunyuan3d, tripo3d. |
material_from_image | One image → a full PBR material, deterministically: an alpha or luminance mask drives composited base color, matte/glossy roughness, embossed normal + height maps, and optional metallic — e.g. a logo becomes a raised glossy label on a matte can. |
presets_list / preset_apply | Curated one-call presets: PBR materials (glass, chrome, gold, neon…), lighting rigs (studio three-point, softbox, sunset…), camera framings (hero, top-down, isometric…), and render profiles (draft, production). Compile to validated scene operations. |
webhooks_set / webhooks_list / webhook_test / webhooks_delete | Push instead of polling: register an https URL and get HMAC-signed POSTs on job.completed / job.failed / job.cancelled. Signing secret shown once; test deliveries on demand. |
job_wait | Long-poll a job up to 25s per call — returns the moment it hits a terminal state. Chain calls for longer jobs. |
platform_status | Capability discovery: whether Blender execution is currently available, open job counts, and the deployment's policy limits — fail fast instead of queueing doomed jobs. |
project_update / project_delete | Rename or soft-delete projects (delete refuses while jobs are open). |
deployment_policy_update | Self-service policy tuning over MCP: timeouts, queue depth, render caps, and enabling scene_script (owner only) — no dashboard required. |
asset_generate_3d / asset_generate_status | Text or image → 3D model via Hyper3D Rodin, Tencent Hunyuan3D, or Tripo3D (BYO keys). Start, poll, then import the finished model with asset_library_import — optionally scaled to a real-world targetSize. |
integrations_set / integrations_list / integrations_delete | Agent-managed third-party source credentials (Sketchfab, Hyper3D, Hunyuan3D, Tripo3D), encrypted at rest — configure once over MCP, no dashboard needed. |
upload_create / upload_complete | Two-step direct upload for assets (signed PUT, then finalize + scan). |
asset_import | Import a validated uploaded asset (glb/obj/fbx/stl…) into a project as a new revision (async job). |
render_create | Queue a Cycles render of a revision (width/height/samples/transparency; policy-capped; async job). |
render_turntable | 2-12 evenly spaced orbit views in ONE job — near-instant Workbench previews or lit Cycles frames, each viewable inline via scene_snapshot. targetObjectIds orbits and frames only those objects, so product shots keep floors and backdrops out of frame without hiding them. |
render_animation | Keyframed sequence → H.264 MP4 in one job (up to 600 frames; Cycles or fast preview). Long sequences render as parallel segment jobs over contiguous frame ranges — concat-safe MP4 segments. |
export_create | Export a revision to glb, obj, stl, or blend. Engine presets apply target conventions — unity, unreal, godot, and print (STL scaled meters→millimeters so slicers read true size). |
revision_diff | Semantic diff between a revision and its parent: added/removed objects, transforms, materials… |
revision_restore | Restore an older revision as a new head commit (history is never rewritten). |
artifact_get | Metadata + expiring download URL for a render, export, or preview artifact. |
job_get / jobs_list / job_cancel | Poll job status + progress, list jobs, request cancellation. |
Account tools (API-key endpoint only)
| Tool | What it does |
|---|---|
organizations_list | Organizations this account belongs to, with your role. |
deployments_list | Every accessible deployment; flags which one this session is bound to. |
deployment_create | Create a new isolated deployment (owner/admin). |
deployment_update | Rename or enable/disable a deployment (owner/admin). |
deployment_delete | Delete an empty deployment (owner/admin). |
Scene operations
scene_apply takes a batch of typed, validated operations — not arbitrary code. Every batch is checked against the current scene (references must exist, names must be unique) and committed atomically as one new revision with a fresh preview.
| Family | Operations |
|---|---|
object.* | create_primitive, transform, rename, duplicate, delete, parent, unparent, set_visibility |
collection.* | create, rename, link_object, unlink_object |
material.* | create, update_principled (PBR params), assign, remove_assignment |
modifier.* | add / update / remove — bevel, subdivision, solidify, array, mirror, boolean |
mesh.* | apply_modifier, bevel, subdivide, recalculate_normals, shade_smooth, merge_vertices, center_origin, lay_flat, fill_holes, dissolve_degenerate, decimate (collapse/planar reduction), remesh (voxel/QuadriFlow retopology), tris_to_quads, make_printable (one-op print prep: watertight remesh + triangle budget + bed placement), lathe (revolve a [radius,z] profile — cans, bottles, glasses) |
uv.cylindrical_project | parametric label placement on cylinders: arc coverage, center azimuth, vertical span, cap pinning |
light.* | upsert (point/sun/spot/area with energy & color), delete |
camera.* | upsert (lens, clip, sensor, depth of field: fstop / focusDistance / focusObject — focus tracks the object through camera moves), look_at (auto-refocuses at the aim target when DOF is on), set_active, delete |
world.update | background color / strength |
render_settings.update | resolution, samples, engine settings |
animation.* | set_range (frame span + fps), keyframe_transform (explicit location / scale / lookAt aim per moment — atomic set-and-key), keyframe_camera (lens / aperture / focus pulls), remove_keyframes — interpolation control incl. constant-hold for hard cuts |
Batches execute inside real Blender (bpy) in an isolated container. Use scene_validate for a free dry-run before committing.
Jobs & revisions
Anything that touches Blender is asynchronous: the tool returns a job handle immediately (jobId, status, pollAfterMs); poll with job_get. Statuses: queued → awaiting_capacity → preparing → starting_container → running → uploading_outputs → committing → completed (or failed / cancelled). Progress streams live into the dashboard.
Scene state is a chain of immutable revisions. Concurrent writers are safe: a batch commits only if the head it was built against is still the head (compare-and-swap); otherwise the job fails cleanly and the agent retries against the new head. revision_restore rolls back by copying an old revision forward — history is never rewritten.
Limits & policies (defaults)
| Policy | Default |
|---|---|
| Concurrent jobs per deployment | 2 (queued up to 25) |
| Job timeout | 300 s |
| Render caps | 2048 × 2048 px, 256 samples |
| Upload limit | 100 MB per file |
| Tool requests | 120 / minute per deployment |
| Arbitrary Python (scene_script) | disabled by default; owner opt-in per deployment |
Owners can tune policies per deployment in the dashboard; hard platform caps apply.
Client setup
Claude Code
claude mcp add sceneplane https://mcp.sceneplane.online/v1 \
--transport http --header "Authorization: Bearer <YOUR_API_KEY>"
Claude Desktop / any header-capable JSON-config client
Use the API-key JSON block from the Quickstart in your MCP servers config.
Claude web (OAuth-capable custom connector)
Web connectors cannot send custom headers — OAuth handles it on the same URL: add https://mcp.sceneplane.online/v1, leave the OAuth client ID empty, and complete the sign-in prompt (you pick the deployment during consent).