Skip to main content
Glama

JANCTION Render

JasmyLab-JANCTION/janction-render MCP server

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 .blend file, or a bpy Python script that builds the scene (no local Blender needed).

  • scene_info reads the scene without rendering (cameras, frame range, missing files).

  • render_preview returns 1-4 low-cost frames tiled in one image within seconds, so the agent can look, fix, and repeat.

  • render_estimate says how long a render will take ("about 3 minutes") and whether it fits today's free quota.

  • render_final renders the frames on GPUs and joins them into an MP4; render_status reports 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

claude mcp add --transport http janction-render https://render.janction.jp/mcp, then /mcp to authenticate

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-render

Install (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-mcp

Codex: 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

render_preview(..., frames="1-24")

up to 4 frames (720p budget) tiled with frame labels; returns the image inline

render_estimate(scene_id, frame_start, frame_end, width, height, samples)

GPU seconds, queue wait, "about N minutes", fits today's free quota? No GPU time used

render_final(scene_id, frame_start, frame_end, width, height, samples, fps, output)

PNG or MP4; returns job_id + estimate

render_status(job_id)

progress and ETA (eta.human); render_download(job_id) files or links; render_cancel(job_id)

billing()

free-beta quota (used today, daily limit, reset time); later balance and top-up link

render_info()

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  /security

During 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 tools
billingA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
topup_yenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
out_dirNo
wait_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNofinal
widthNo
framesNo
heightNo
samplesNo
scene_idNo
frame_endNo
frame_startNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fpsNo
widthNo
cameraNo
heightNo
outputNoauto
samplesNo
scene_idNo
frame_endNo
scene_pathNo
frame_startNo
scene_scriptNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNo
cameraNo
framesNo
heightNo
out_dirNo
samplesNo
scene_idNo
scene_pathNo
scene_scriptNo

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scene_idNo
scene_pathNo
scene_scriptNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 9 tool updatesv0.2.1
    • First observedbilling
    • First observedrender_cancel
    • First observedrender_download
    • First observedrender_estimate
    • First observedrender_final
    • First observedrender_info
    • First observedrender_preview
    • First observedrender_status
    • First observedscene_info

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    22
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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.
    2
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables remote control of Blender through MCP, allowing code execution, scene manipulation, rendering, and file transfer in a containerized environment.
    1
    -