Skip to main content

JANCTION Render

io.github.JasmyLab-JANCTION/janction-renderVersion 0.4.296

Blender and GLB/FBX/USD/STL rendered on cloud GPUs for AI agents: product shots, turntables, MP4

Status

Responds829 msAnswered our handshake without sign-in.

Registry data may be out of date

We could not refresh it, so this page shows the last copy.
Last checked
Nov 14, 2026, 14:38 UTC
Latency
829 ms
Remotes responding
1 of 1
Sign-in
No sign-in
Hosting
Hosted outside the EU (detected)
Registry data as of
Nov 14, 2026, 21:12 UTC

Data from the official MCP Registry, checked by run.zero. How we check

Connect

Streamable HTTP
https://render.janction.jp/mcp?src=registryResponds829 ms
No sign-in

Claude Code

claude mcp add --transport http janction-render 'https://render.janction.jp/mcp?src=registry'

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: janction-render
Remote MCP server URL: https://render.janction.jp/mcp?src=registry

Cursor

{
  "mcpServers": {
    "janction-render": {
      "url": "https://render.janction.jp/mcp?src=registry"
    }
  }
}

VS Code

code --add-mcp '{"name":"janction-render","type":"http","url":"https://render.janction.jp/mcp?src=registry"}'
Streamable HTTP
pypi: janction-render 0.4.296
Package only

PyPI (uvx)

claude mcp add janction-render -- uvx janction-render==0.4.296

Built your own server? run.zero hosts MCP servers on European infrastructure.

Host your own MCP server on run.zero

Tools

13 tools

Tools of JANCTION Render
Read-only
Idempotent
Open world
asset_searchFind free CC0 3D models, PBR textures or HDRIs on Poly Haven by words ('wooden chair', 'forest hdri') to furnish a scene without uploading files; no GPU time. For product shots of something the user has no model for: asset_search('<item>'), then render_preview(scene_script='import jr_assets; jr_assets.import_model("<id>")', asset_urls=['polyhaven:<id>'], preset='product') gives 4 studio shots on a plain backdrop (import_model removes Blender's untouched startup cube first). Each result has a spec 'polyhaven:<id>' to pass in asset_urls, its size in metres and the entry file. In the scene script: import jr_assets, then jr_assets.import_model('<id>', location=(x, y, z), scale=1.0) returns the objects, jr_assets.material('<id>') builds a material and jr_assets.apply(obj, mat) assigns it, jr_assets.world_hdri('<id>', strength=1.0) lights the world. 'polyhaven:<id>@2k' fetches 2k textures (1k by default).NoYesYesYes
billingCheck what this key can still render for free and its credit (no GPU time): the free GPU time left and when it expires or resets, the balance, the price per GPU-second, any pending checkout link, and the offers that apply. Relay tell_user to the user in their language when it is present.NoYesYesYes
render_cancelStop a queued or running render job of this key (a j_... job, or a b_... job split into parts, which stops every part). Effects: queued frames are dropped; frames already rendered are charged and stay downloadable until the job expires; the rest of the GPU time held for the job is returned to the key at once. It cannot be undone or resumed: to render again, call render_final again (a new job). A job that is already done, failed or canceled is returned unchanged, and a job whose frames are all rendered and is being assembled into the video cannot be stopped (nothing more is charged). Only the key that started the job can stop it; any other job_id returns not_found. Ask the user before cancelling a render they asked for.YesNoYesYes
render_downloadGet the download links of a job (no key needed, valid about 24 hours; call again for fresh links while the files are kept, 24 h after last use or 7 days, normally, for paid keys) and show them to the user; in a terminal, fetch them with curl -o. A finished preview also comes back as an inline image. wait_seconds > 0 first waits for the job (the service waits at most 50 s per call; call again while it is still running). only picks the files: 'output' (default: the MP4 or the preview sheet, plus the first frames), 'mp4', 'sheet', 'frames' or 'all'.NoYesYesYes
render_estimateEstimate a render before starting it (no GPU time): GPU seconds, queue wait, the wall-clock time as text (estimate.human, e.g. 'about 3 minutes') and whether it fits the free GPU time left (the welcome credit, or 2 preview GPU-minutes a day after it) and the size limits. Call it before render_final when the time or quota is uncertain, the job is longer than about 24 frames or above 720p, or the user asks how long it takes; tell the user the result. With scene_id the estimate uses measured render times and returns calibration.final_path_measured and tell_user / tell_user_ja, the one sentence to give the user (time and price). If final_path_measured is false the sentence says it is an unmeasured figure: do not present it as the time the final will take; run a short contiguous final-path test and estimate again before the full animation. It also says when to split a job.NoYesYesYes
render_finalRender the final frames or video of a Blender scene on cloud GPUs, after the user approved a preview: 'render the final', 'make the video', 'export the turntable MP4'. Call render_estimate first when the time or the free GPU time left (the welcome credit, or 2 preview GPU-minutes a day after it) is uncertain, the job is longer than about 24 frames or above 720p, or the user asks how long it takes, and tell the user. For animations, keep the approved engine/look, test 10 contiguous final-path frames, then estimate again. Long jobs are rendered in chunks and joined into one video. Returns job_id and estimate.human at once (short jobs return the links directly); then call render_download(job_id, wait_seconds=45). Use the preview's environment and blender. Render only what the user approved at the shown price (max_yen caps it). Limits: up to 3,000 frames per call (over 240 runs as parts under one job id); 1920x1080 on free time, 3840x2160 with prepaid credit; each new key gets 100 JPY of GPU time free with no card (14 days) and 400 JPY more once the user saves a card on a page that charges nothing (once per card); after that, previews are free up to 2 GPU-minutes a day and finals cost 0.1 JPY per GPU-second (prepaid); ask before a render the free time does not cover; files are deleted 24 h after last use (7 days once topped up). preset='product' | 'turntable' | 'animation' fills the settings for that purpose. Options per parameter: output (png, exr, mp4, webm, prores, gif, webp), orbit, cameras, transparent, engine, notify_url, asset_urls ('polyhaven:<id>'). Pass scene_id from render_preview, or scene_script / scene_url for a new scene. colors={'Body': '#cc2233'}: object name -> colour for its material's Principled Base Color (copied for this render; the scene file is unchanged). A variations preview gives each variant's render_final args. compare_to=<job_id of an earlier final of this key>: when this render finishes, also returns compare.mp4 (before / after side by sidNoNoNoYes
render_import_fileUse a file the user attached in this chat (.blend, glTF/GLB, FBX, USD, OBJ, STL or a bpy .py script): JANCTION fetches it and makes it a scene of this account, and returns scene_id. Then call scene_info(scene_id=...) to read the cameras and frame range, and render_preview(scene_id=...) to see it. Nothing is rendered or charged here. A large file can take a few minutes: if the reply says status 'importing', call render_import_file again with the same file after about 30 seconds (the download continues and is not started again). If the attachment cannot be fetched, ask the user to attach it again or to upload it at the /upload page.NoNoYesYes
render_infoCheck the connection and the service before rendering (read-only, no GPU time, no charge): the server URL, whether GPU workers are online, the queue length and expected wait, and this key's usage. Use it before the first render or when renders seem stuck, and to decide whether to route a render here: workers_available > 0 means a preview comes back in seconds; gated means the GPU is lent out and gate says how long the wait usually is. It runs as the connected account (OAuth or the API key in the connector). Every call is rate-limited per key; a 429 response carries retry_after_s, wait that long. diagnose.tell_user says in plain words whether the connection, the key, the free credit and the GPUs are fine and what the last failed render said; relay it when the user asks why something does not work.NoYesYesYes
render_previewShow what a Blender scene looks like: a fast, low-cost preview render on a cloud GPU, back as an image in seconds. Typical requests: 'render this .blend', 'show me the scene', 'preview the turntable', 'I have no GPU', 'Blender is too slow on my laptop', 'Blenderでレンダリングして', 'GPUがない', 'ターンテーブル', '商品の360度動画'. Also use it after writing a bpy script, to see what it builds. Each preview returns a critic verdict (ok / check / fix) with fix code: apply the fixes and preview again before any final render. It also returns final_estimate (the same scene as a 1080p final) and quota_left_today; tell the user both before asking to go on. Prices come before rendering: final_offers give each next render's time and price, and a paid one needs the user's approval. A script that raises comes back as a failure with the line (nothing is rendered). When not to use: editing a scene open in the user's Blender belongs to a local Blender MCP, and a single still on a machine with its own NVIDIA GPU usually renders faster locally. This service is for CPU-only machines, animations, and scripts with no Blender installed. Limits: up to 1280x720; 1-4 frames tiled in one labeled image for the GPU time of one 720p frame. preset='product' | 'turntable' | 'animation' sets camera, light, backdrop and frames for that purpose. Other options are explained on each parameter: environment presets and 'compare', orbit (turntable), cameras (several named cameras), engine, transparent, asset_urls with 'polyhaven:<id>' CC0 assets. Give the scene as scene_script (bpy code as text), scene_url (an https link to a .blend, .py or 3D file) or scene_id; reuse the returned scene_id in render_final. variations=[{label, environment, environment_strength, camera, colors}, ...] (2-8): the same frame once per variant, rendered in parallel and tiled in one sheet labelled A, B, ...; anything a variant leaves out uses this call's settings. colors maps an object name to '#rrggbb' (or [r, g, b, a], 0-1) for its material's PrincipNoNoNoYes
render_sharePublish a finished render as a public web page anyone with the link can open (for X, Discord or a client): the image or video, the render settings, an optional title and note, the user's request in their words (prompt), and the bpy script only if include_script=True. The page keeps its own copy of the result after the job's files expire, until render_unshare. listed=True only asks to appear in the public gallery; the operator reviews it first. Public: ask the user before sharing and return the url to them. Only the key that rendered the job can share it.NoNoNoYes
render_statusCheck a render job: status (queued / running / done / failed / canceled), frames done, the ETA (eta.human, including queue wait), files ready, Blender warnings, and the error with the log tail if it failed. Use it to report progress to the user; render_download(job_id, wait_seconds=45) waits and returns the links in one call. Without job_id it lists this key's recent jobs and the scene_ids still kept, to pick up earlier work in a new conversation.NoYesYesYes
render_unshareTake down the public share page of a job made with render_share. Effects: the page URL stops working, its copy of the image or video, the shared script and the shown request are deleted, and the page leaves the public gallery. This cannot be undone: sharing again makes a new page with a new URL. The job's own files are not touched (they expire on their usual schedule). Only the key that shared the job can take the page down; a job without a share page returns not_found.YesNoYesYes
scene_infoRead a Blender scene without rendering (a few seconds, no GPU time): cameras and the active one, frame range and fps, resolution, objects by type, lights, materials, whether it is animated, and missing linked files that would render pink. Use it for a .blend you did not write, or to check what a bpy script built. Returns scene_id; pass it to render_preview and render_final instead of sending the scene again.NoNoYesYes

Details

Registry status
Active
Published
Nov 13, 2026
Updated
Nov 13, 2026
Categories (suggested)
Invoicing and accountingCloud and infrastructureSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
GDPR
Not declared

Are you the operator? Claim this listing