JANCTION Render
Provides tools for rendering Blender scenes on remote GPUs, including scene inspection (cameras, frame range, missing files), low-cost preview renders, and final MP4 renders, accepting .blend files or bpy Python scripts.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@JANCTION Renderrender a 4-frame preview of my street.blend so I can check the camera framing"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
JANCTION Render
A cloud GPU render farm for Blender, built for AI agents. Render Blender scenes on JANCTION GPUs from Claude, ChatGPT, Claude Code, Codex, Cursor or any MCP client: an MCP server (remote and stdio) plus a CLI. Use it to render Blender without a GPU, or when rendering locally is slow.
Input: a
.blendfile, or a bpy Python script that builds the scene (no local Blender needed).scene_inforeads the scene without rendering (cameras, frame range, missing files).render_previewreturns 1-4 low-cost frames tiled in one image within seconds, so the agent can look, fix, and repeat.render_estimatesays how long a render will take ("about 3 minutes") and whether it fits today's free quota.render_finalrenders the frames on GPUs and joins them into an MP4;render_statusreports the remaining time.Free beta: no charges. Each key gets 10 GPU-minutes per day; a final render is up to 240 frames at 1080p. Paid plans (per GPU second, prepaid credit) will be announced on the service page before they start.
Inputs and results are deleted 24 hours after last use and are never used for training.
Status
Free beta. Service page: https://render.janction.jp (/v1/health, /llms.txt). Blender 5.0, Cycles on GPU.
Related MCP server: Blender MCP
Connect (remote MCP, nothing to install)
MCP server URL: https://render.janction.jp/mcp (Streamable HTTP). Auth is OAuth 2.1 with dynamic client
registration: pressing "Connect" opens a page that creates a free API key (or takes one you already have). A raw API key
also works as Authorization: Bearer jr_....
client | how |
Claude.ai (web, desktop, mobile) | Settings → Connectors → Add custom connector → paste the URL → Connect |
ChatGPT | Settings → Connectors → Advanced → Developer mode → Create → paste the URL (OAuth) |
Claude Code |
|
Cursor, Windsurf, other MCP clients | Streamable HTTP at the URL above (OAuth, or a Bearer API key header) |
Remote tools take scene_script (bpy code as text), scene_url (an https link to a .blend or .py) or scene_id;
results come back as an inline image plus download links that need no key and work for about 24 hours.
Claude Code plugin (the remote connector plus a skill with the workflow):
/plugin marketplace add JasmyLab-JANCTION/janction-render
/plugin install janction-render@janction-renderInstall (stdio MCP, sends local files)
The package is on PyPI as janction-render.
# Claude Code (uvx runs it without a global install)
claude mcp add janction-render -e JANCTION_RENDER_SERVER=https://render.janction.jp -- uvx --from janction-render janction-render-mcp
# or with pip / pipx
pip install janction-render
claude mcp add janction-render -e JANCTION_RENDER_SERVER=https://render.janction.jp -- janction-render-mcpCodex: add to ~/.codex/config.toml
[mcp_servers.janction-render]
command = "uvx"
args = ["--from", "janction-render", "janction-render-mcp"]
env = { JANCTION_RENDER_SERVER = "https://render.janction.jp" }A temporary API key is issued automatically on first use and cached in ~/.janction-render.json; set
JANCTION_RENDER_API_KEY to pin one (quota and, later, credit belong to the key). The same key can be used from the
remote connector: paste it on the connect page.
Then, in Claude Code:
Build a small street scene in Blender with a camera fly-through and render a preview with janction-render.
Tools
tool | what |
`scene_info(scene_script | scene_url |
| up to 4 frames (720p budget) tiled with frame labels; returns the image inline |
| GPU seconds, queue wait, "about N minutes", fits today's free quota? No GPU time used |
| PNG or MP4; returns job_id + estimate |
| progress and ETA ( |
| free-beta quota (used today, daily limit, reset time); later balance and top-up link |
| workers online, queue and expected wait |
CLI: janction-render inspect|preview|render|status|download|cancel|jobs|balance|topup|info.
Writing a scene script
import bpy, math
for ob in list(bpy.data.objects):
bpy.data.objects.remove(ob, do_unlink=True)
scene = bpy.context.scene
scene.frame_start, scene.frame_end = 1, 24
bpy.ops.mesh.primitive_monkey_add(location=(0, 0, 1))
cam = bpy.data.objects.new("Camera", bpy.data.cameras.new("Camera"))
scene.collection.objects.link(cam); scene.camera = cam
cam.location = (6, -6, 4); cam.rotation_euler = (math.radians(60), 0, math.radians(45))
sun = bpy.data.objects.new("Sun", bpy.data.lights.new("Sun", "SUN"))
scene.collection.objects.link(sun)The service sets engine (Cycles), resolution, samples and denoising; your script sets the scene, camera and frame range.
Scripts run in an isolated container with no network. See samples/cube_scene.py.
HTTP API
POST /v1/keys -> {api_key} (header X-API-Key afterwards)
POST /v1/files multipart "file" (.blend|.py) -> {scene_id}
POST /v1/estimate {kind, frames|frame_start/frame_end, width, height, samples, scene_id?} -> seconds, wall_seconds, human, quota
POST /v1/jobs {scene_id, kind: info|preview|final, frames|frame_start/frame_end, width, height, samples, camera, fps, output}
GET /v1/jobs/{id} status, progress, eta, artifacts[], cost, warnings, info DELETE /v1/jobs/{id} cancel
GET /v1/jobs/{id}/artifacts/{name} PNG / MP4
POST /mcp remote MCP (Streamable HTTP; Bearer api key or OAuth)
GET /.well-known/oauth-protected-resource/mcp OAuth discovery
POST /v1/billing/checkout {amount_yen} -> {checkout_url} POST /v1/billing/sync GET /v1/ledger GET /v1/me
GET /llms.txt /terms /privacy /legal /securityDuring the free beta a 429 quota_exceeded response carries resets_at; a 400 beta_limit means the job is too big
(split it). Once paid plans start, a 402 payment_required response carries checkout_url.
Self-hosting
The server (FastAPI + SQLite, with the remote MCP endpoint) and the worker (Blender in disposable Docker containers,
--network none --cap-drop ALL) live in the internal repository and are not part of this package yet. This repository
holds the client side: stdio MCP server, CLI, HTTP client, samples and the Claude Code plugin.
MCP registry
This server is listed in the official MCP registry as io.github.JasmyLab-JANCTION/janction-render (remote: https://render.janction.jp/mcp).
mcp-name: io.github.JasmyLab-JANCTION/janction-render
License
MIT (see LICENSE). Operated by JasmyLab Inc.
Available Tools
9 toolsbillingA
Check the account's quota or credit. During the free beta it returns today's GPU-time usage, the daily quota and when it resets (no charges). Once paid plans start: with topup_yen = 0 it confirms any payment the user just made and returns the balance (yen), the price per GPU second and free previews left; with topup_yen > 0 (minimum 500) it returns a Stripe checkout URL to show to the user. Renders are charged by GPU seconds and only for frames that actually rendered.
| Name | Required | Description | Default |
|---|---|---|---|
| topup_yen | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely meets it: it discloses that beta usage is free, that topup returns a Stripe URL the agent must show to the user, and that renders are charged by GPU second only for frames that actually rendered. It does not cover auth requirements, failure modes, or whether topup charges immediately versus at checkout completion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first clause, and each subsequent sentence adds a distinct fact (beta behavior, paid branches, charging model). It is dense and slightly long for a one-parameter tool, but no sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not strictly required, yet the description helpfully summarizes what each mode returns. Given the financial nature of the tool, the main residual gap is the absence of any note on permissions or error handling, but nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter is undocumented in the schema, yet the description fully compensates: topup_yen = 0 triggers payment confirmation and balance readout, while topup_yen > 0 with a minimum of 500 triggers a Stripe checkout URL. An agent can choose a value correctly without any other source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb and resource: 'Check the account's quota or credit', and then details the mode-dependent payload (usage/quota/reset in beta, balance/price/previews when paid). This is clearly distinct from the render_* and scene_info siblings, which do not touch account balances or payments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit conditional guidance keyed on topup_yen: 0 to confirm a just-made payment and read the balance, >0 (min 500) to obtain a checkout URL. It also frames the beta-vs-paid distinction. What's missing is routing advice against any alternative tool, but for this resource there is no competing sibling to name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_cancelC
Cancel a queued or running JANCTION render job. GPU time after the cancel is not used.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses that GPU time after cancel is not used (billing implication) and that only queued or running jobs can be canceled, but omits other behavioral traits such as permissions, reversibility, or what happens to the job after cancellation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by a key effect. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, the description is sparse. While it covers the basic action and one billing detail, it lacks sufficient behavioral context (e.g., permissions, side effects, error conditions) and does not compensate for the undocumented parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the job_id parameter at all. It provides no format, source, or constraints for the parameter, failing to compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Cancel) and resource (JANCTION render job), and scopes the operation to queued or running jobs. It distinguishes itself from siblings like render_status or render_final, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives is provided. The description implies the tool is for cancellation, but lacks when/when-not conditions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_downloadA
Download a JANCTION render job's files (PNG frames, sheet.png and/or output.mp4) to out_dir (default ~/janction-render/). wait_seconds > 0 first waits up to that long for the job to finish. Returns the local file paths.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| out_dir | No | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden; it usefully discloses the default output directory and the blocking wait semantics of wait_seconds, which are non-obvious. However it omits what happens on timeout or failed jobs, overwrite behavior for an existing out_dir, and any permission/auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and output artifacts, then parameter behavior and the return value. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter download tool with an output schema already covering return values, the description supplies the essential defaults and wait semantics. It stops short of covering failure/timeout or overwrite edge cases, but those are secondary given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it explains out_dir's default (~/janction-render/<job_id>) and the conditional semantics of wait_seconds (>0 waits up to that long). job_id is only implicitly explained as the target job, leaving minor room for improvement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource ('Download a JANCTION render job's files') and enumerates the concrete artifacts returned (PNG frames, sheet.png, output.mp4), so the agent can distinguish it from siblings like render_status, render_cancel, or render_final without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (download a finished job's outputs) and the wait_seconds behavior hints at post-render retrieval, but the description never states when to prefer this over render_status or render_info, nor any prerequisite like the job existing or being complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_estimateA
Estimate how long a render will take BEFORE starting it (no GPU time used): GPU seconds, queue wait, wall-clock time as a human-readable string ('about 3 minutes'), and whether it fits today's free quota and the size limits. kind is 'final' (frame_start..frame_end at width x height, samples) or 'preview' (frames like '1-24'). Pass scene_id when you have one: the estimate then uses this scene's own measured render times. Tell the user the result before calling render_final.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | final | |
| width | No | ||
| frames | No | ||
| height | No | ||
| samples | No | ||
| scene_id | No | ||
| frame_end | No | ||
| frame_start | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does most of it: it discloses that no GPU time is consumed, that scene_id switches to measured per-scene timings, and what the result contains (GPU seconds, queue wait, quota fit, size limits). It does not state error behavior or whether results can be cached/reused, so it falls just short of full disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and cost, then structured by parameter and workflow. Dense but every clause carries information; only the parenthetical rendering example ('about 3 minutes') is decorative padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, zero-coverage, no-annotation tool this is complete: purpose, cost, parameter semantics, and the workflow step that must precede render_final are all covered. Return values are partly described even though an output schema already exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and all 8 parameters are undocumented in the schema, so the description must compensate — and it does. It defines kind ('final' vs 'preview'), the frames syntax ('1-24'), the frame_start..frame_end range, width x height, samples, and the effect of passing scene_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (estimate) and resource (render) with an explicit scope constraint: it runs BEFORE the render starts and consumes no GPU time. This cleanly distinguishes it from render_final and render_preview, which actually produce output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it (before starting a render), what it costs (no GPU time), and names the sibling that follows it: 'Tell the user the result before calling render_final.' It also gives a condition for the optional scene_id parameter. Routing to the alternative is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_finalA
Render the final frames (or a video) of a Blender scene on JANCTION GPUs.
Call this after the user approved a preview. Pass scene_id from render_preview (or scene_path / scene_script to upload a new .blend / bpy script). frame_start..frame_end are inclusive; several frames are split across GPUs and joined into output.mp4 (output='mp4', fps), a single frame gives a PNG (output='png'; 'auto' picks). Returns job_id and a time estimate right away; the render runs in the background: poll with render_status, then fetch with render_download. Inputs and results are deleted 24 hours after last use, so download them.
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | ||
| width | No | ||
| camera | No | ||
| height | No | ||
| output | No | auto | |
| samples | No | ||
| scene_id | No | ||
| frame_end | No | ||
| scene_path | No | ||
| frame_start | No | ||
| scene_script | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses that the call returns job_id plus an estimate immediately while rendering runs in the background, prescribes polling with render_status followed by render_download, and warns that inputs/results are deleted 24 hours after last use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then workflow and retention caveats, with no filler sentences. Dense but every clause carries information; minor density cost from packing the polling chain into one sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be detailed, and the description still explains the async return contract and lifecycle. The only gap is the four undocumented rendering parameters, which an agent may set blindly given the defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across 11 parameters, so the description must compensate. It gives meaning for scene_id, scene_path, scene_script, frame_start/frame_end (inclusive), output ('mp4'/'png'/'auto') and fps, but leaves width, height, camera and samples entirely undocumented in both description and schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (render) and resource (final frames or video of a Blender scene) plus the execution environment (JANCTION GPUs). The phrase 'Call this after the user approved a preview' cleanly separates it from the sibling render_preview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call it (after preview approval) and names the alternative entry points: reuse scene_id from render_preview, or upload via scene_path/scene_script. It also routes the agent forward to render_status and render_download, so the full workflow is inferable without opening other definitions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_infoA
Show the JANCTION Render connection: server URL, whether GPU workers are online, queue length, and this key's usage. Call this if renders seem stuck or before the first render.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden alone. It implies a read-only diagnostic (no mutation hinted) and names the data returned, but does not state read-only-ness, auth requirements, or rate limits explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with what it shows and followed by when to call. Every clause earns its place with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and zero-param simplicity keeps the burden low. The only gap is the unexplained boundary with the sibling render_status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. No parameter information is needed or missing, and the description correctly describes a no-arg diagnostic call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'Show' and resource 'JANCTION Render connection', with concrete fields (server URL, GPU worker status, queue length, key usage). It distinguishes itself from render_status by the connection/diagnostic framing, though the overlap with render_status is not explicitly addressed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete triggering conditions ('if renders seem stuck' and 'before the first render'). It doesn't explicitly contrast with sibling render_status, which is the nearest-overlap tool, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_previewA
Render a fast, cheap preview of a Blender scene on a JANCTION GPU and show the image.
Use this when the user is making 3DCG with Blender and wants to see how it looks, but has no GPU or local rendering is slow. Give the scene as scene_path (a .blend file OR a bpy Python script), scene_script (bpy code as text; no file and no local Blender needed), or scene_id from a previous call. frames: '' = frame 1; '12' = one frame; '1,8,16,24' or '1-24' = up to 4 frames tiled in ONE image (2x2, each tile labeled with its frame number) so you can judge camera motion and animation. Same GPU cost as one 720p frame. Quality is deliberately low (up to 1280x720, few samples, denoised). Look at the returned image, fix the scene, preview again; when it looks right, ask the user and call render_final. Returns scene_id (reuse it without re-uploading), job_id, saved PNG paths, Blender warnings (e.g. missing textures), GPU seconds, and the expiry time (24h after last use).
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| camera | No | ||
| frames | No | ||
| height | No | ||
| out_dir | No | ||
| samples | No | ||
| scene_id | No | ||
| scene_path | No | ||
| scene_script | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does well: it declares the output quality ('deliberately low, up to 1280x720, few samples, denoised'), cost model ('same GPU cost as one 720p frame'), return values including warnings and expiry ('24h after last use'), and reuse semantics ('reuse it without re-uploading'). The main gap is that it doesn't explicitly state potential side effects like whether a job consumes billing immediately or whether partial failures are returned as errors, but overall it is substantially informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then provides usage and parameter details in a logical flow. It is somewhat long but most sentences earn their place by clarifying behavior; a few phrases like the full iteration advice could be trimmed without losing essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and 9 parameters at 0% schema coverage, the description does a decent job covering return values and the frames parameter but omits explanation for five important parameters (camera, width, height, samples, out_dir). For a tool with this complexity, a more complete parameter guide is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it partially does: it explains scene_path (a .blend file OR a bpy Python script), scene_script (bpy code as text), scene_id (from a previous call), and frames (with exact syntax and tiling behavior). However, width, height, samples, camera, and out_dir receive no explanation, leaving meaningful gaps for a 9-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Render a fast, cheap preview of a Blender scene on a JANCTION GPU') and clearly distinguishes itself from siblings by emphasizing it is a preview, with an explicit handoff to render_final. An agent can identify exactly what the tool does without reading other definitions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool ('when the user is making 3DCG with Blender and wants to see how it looks, but has no GPU or local rendering is slow'), provides the alternative action ('call render_final' once satisfied), and describes the iterative workflow between them. This is a strong example of routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_statusA
Check a JANCTION render job: status (queued/running/done/failed/canceled), frames done, how many chunks are queued ahead, the ETA (eta.human = remaining time including queue wait), artifacts ready, Blender warnings, and the error plus log tail if it failed. Use render_download once status is done.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It details returned fields (frames done, queued chunks, ETA, artifacts, warnings, error/log tail), which is useful, but it never states that this is a read-only operation, nor does it mention permissions, rate limits, or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences front-load the purpose, then list the exact return fields, and close with a routing tip. Every phrase earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description does not need to explain return values (though it does helpfully enumerate them). The main gap is the unexplained job_id parameter, which an agent must still infer from context or prior tool calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required parameter (job_id) with 0% schema description coverage. The description never mentions job_id, its expected format, or where to obtain it, so it fails to compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Check') and resource ('a JANCTION render job'), then enumerates the exact status fields returned. It also distinguishes itself from the sibling 'render_download' by saying to use that only once status is done.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit alternative and condition: 'Use render_download once status is done.' However, it does not state when not to use this tool or clarify its relationship to other status-like siblings (e.g., render_info).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scene_infoA
Read a Blender scene WITHOUT rendering: cameras (and which is active), frame range and fps, resolution, engine, objects by type, lights, materials, whether it is animated, and any linked files that are missing (textures etc. that would render pink). Takes a few seconds, no GPU.
Give the scene as scene_path (.blend or .py file), scene_script (bpy Python code as text, no file needed), or scene_id from a previous call. Call this first for a .blend you did not write yourself, or after writing a bpy script to check what it produced. Use the camera names and frame range in render_preview / render_final. Returns scene_id to reuse in the next calls.
| Name | Required | Description | Default |
|---|---|---|---|
| scene_id | No | ||
| scene_path | No | ||
| scene_script | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers real behavioral context: no GPU required, takes a few seconds, detects missing linked files ('that would render pink'), and returns a scene_id for reuse. It stops short of error/permission behavior or whether the scene is mutated, but the operational profile is unusually well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose in sentence one, then handles invocation modes and workflow placement. Three sentences, each carrying distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values need not be re-explained, yet the description still notes scene_id is returned for reuse. Combined with input-mode coverage, sibling routing, and the no-render behavioral profile, an agent has everything needed to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it largely does: scene_path is '.blend or .py file', scene_script is 'bpy Python code as text, no file needed', and scene_id comes 'from a previous call'. Each of the three parameters gets explaining format or provenance, leaving only mutual-exclusivity/default rules unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Read a Blender scene') and immediately scopes it ('WITHOUT rendering'), then enumerates exactly what is returned (cameras, frame range, fps, resolution, engine, objects, lights, materials, animation, missing linked files). This clearly differentiates it from the render_* siblings, which perform rendering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call it: 'Call this first for a .blend you did not write yourself, or after writing a bpy script to check what it produced.' It also routes output forward ('Use the camera names and frame range in render_preview / render_final'), naming the downstream alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v0.2.1- First observed
billing - First observed
render_cancel - First observed
render_download - First observed
render_estimate - First observed
render_final - First observed
render_info - First observed
render_preview - First observed
render_status - First observed
scene_info
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose: scene inspection (scene_info), preview rendering (render_preview), estimation (render_estimate), final rendering (render_final), job lifecycle (render_status/download/cancel), account (billing), and service health (render_info). The only superficially similar names (scene_info vs render_info) target entirely different domains—Blender scene contents vs JANCTION connection—and descriptions make the boundary explicit.
Almost all tools use a consistent snake_case, mostly render_* prefix pattern (render_preview, render_final, render_status, render_download, render_cancel, render_info). Minor deviations: scene_info uses a different prefix and billing is a lone noun with no action suffix, but the overall style remains uniform and readable.
Nine tools is well-scoped for a cloud Blender rendering service. Each tool maps to a concrete step in the render workflow (inspect, estimate, preview, final, poll, download, cancel, billing, service status) with no redundant or filler tools.
The lifecycle is essentially complete: scene inspection, preview, cost/time estimation, final render, job status, download, cancel, billing, and connection health are all covered. Minor gaps exist—there is no tool to list or retrieve past render jobs/history, and no explicit cleanup management beyond automatic 24h expiry—but core workflows are fully served.
Maintenance
Related MCP Connectors
Render Blender scenes (.blend or bpy script) on JANCTION GPUs from AI agents: previews, frames, MP4.
Cloud Blender for AI agents: build, inspect, render and animate 3D scenes over remote MCP. Keep editable .blend projects and export GLB or STL. Make your first 3D asset free—30 compute minutes per UTC month, no credit card. First 100 eligible Free account owners to use all 30 minutes in one UTC month by December 31, 2026 UTC receive one calendar month of beta free: 4 compute hours per UTC month, 2 concurrent workers per deployment, 2 deployments, 2048×2048 renders at up to 256 samples, and 10 GiB storage. Existing usage counts toward the 4-hour allowance. Limited to 100 rewards; expires January 1, 2027 00:00 UTC. Free resumes afterward without an automatic charge. Examples, eligibility and terms: https://sceneplane.online/launch?utm_source=glama&utm_medium=directory&utm_campaign=first100
Remote MCP server for SeenThis AI Hub. Supports browsing, searching, and posting to AI boards.
Remote MCP for RunComfy: ComfyUI deployments, hosted models, LoRA training. 31 tools.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables connecting Blender 3D to AI assistants via MCP, allowing prompt-driven 3D modeling, scene editing, and real-time manipulation. Supports object/material control, scene inspection, viewport screenshots, and integrations with Poly Haven, Sketchfab, and AI model generators.22MIT
- AlicenseNot gradedqualityCmaintenanceEnables any MCP client to drive Blender 5.2 LTS through natural language, with tools for scene inspection, object creation and transformation, material and modifier handling, rendering, viewport capture, and guarded Python execution.2MIT
- FlicenseNot gradedqualityCmaintenanceEnables remote control of Blender through MCP, allowing code execution, scene manipulation, rendering, and file transfer in a containerized environment.1-
- FlicenseNot gradedqualityCmaintenanceEnables asynchronous Blender rendering via MCP, supporting Cycles, Eevee, and Workbench engines, with GPU detection and job management for animations and still frames.-