accueil / serveurs / Cloud & Infra / io.github.JasmyLab-JANCTION/janction-render
io.github.JasmyLab-JANCTION/janction-render
serveur MCP (Model Context Protocol) · janction-render 0.4.141
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.JasmyLab-JANCTION/janction-render est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.JasmyLab-JANCTION/janction-render » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 12 outils
- asset_search≈ 404 tokens
Find 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. 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).
Paramètres, retour & exemple (2)
Paramètreskind· string · optionnel
'models' (default) | 'textures' | 'hdris'.query· string · requis
Words to search Poly Haven for (name, tags, category), e.g. 'wooden chair' or 'forest hdri'.
Exemple d'appel{"name": "asset_search", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - billing≈ 257 tokens
Check 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 (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)), the balance in yen, the price per GPU-second, any pending checkout link, and card_offer / autocharge_offer when they apply. Relay tell_user to the user in their language when it is present.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "billing", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - render_cancel≈ 360 tokens
Stop 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.
Paramètres, retour & exemple (1)
Paramètresjob_id· string · requis
The job_id returned by render_preview or render_final (j_...; a long final split into parts is b_...). Only this key's jobs; in render_status, leave it empty to list them.
Exemple d'appel{"name": "render_cancel", "arguments": {"job_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - render_download≈ 392 tokens
Get 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'.
Paramètres, retour & exemple (3)
Paramètresonly· string · optionnel
'all' (every frame plus output.mp4 / sheet.png) | 'mp4' | 'frames' | 'sheet' | 'output' (the MP4 or the sheet only).job_id· string · requis
The job_id returned by render_preview or render_final (j_...; a long final split into parts is b_...). Only this key's jobs; in render_status, leave it empty to list them.wait_seconds· integer · optionnel
Wait for the job to finish before returning the links (0 = do not wait). The service waits at most 50 s per call; call again while the job is still running.
Exemple d'appel{"name": "render_download", "arguments": {"job_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - render_estimate≈ 946 tokens
Estimate 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. If false, treat it as preliminary: run a short contiguous final-path test and estimate again before the full animation. It also says when to split a job.
Paramètres, retour & exemple (10)
Paramètreskind· string · optionnel
'final' (frame_start..frame_end at width x height, samples) or 'preview' (frames like '1-24').width· integer · optionnel
Output width in pixels (previews are capped at 1280x720 keeping the aspect ratio; a final frame can have at most 1920x1080 pixels on free time, 3840x2160 on prepaid credit).frames· string · optionnel
Preview frames: '' = frame 1; '12' = one frame; '1,8,16,24' or '1-24' = up to 4 frames tiled in one labeled image (to judge camera motion and animation; same GPU time as one 720p frame).height· integer · optionnel
Output height in pixels (previews are capped at 1280x720 keeping the aspect ratio; a final frame can have at most 1920x1080 pixels on free time, 3840x2160 on prepaid credit).preset· string · optionnel
Purpose preset: 'product' (4 studio shots at 0/90/180/270 deg on a plain backdrop; the final gives 4 PNGs at 1440x1440), 'turntable' (one full turn as an MP4, studio light, plain backdrop), 'animation' (the scene's own camera, lights and frame range; the scene is read first when the range is unknown), or '' (none). It fills what you do not pass; environment, orbit_frames, width/height and the frames still win when given.cameras· ? · optionnel
Several camera object names (up to 8) rendered from the same frame in one job: the preview tiles them in one labeled sheet, the final returns one PNG/EXR per camera (camera_files maps names to files). For product shots from fixed angles. Not combinable with orbit, environment='compare' or camera.samples· integer · optionnel
Cycles samples per pixel (preview: up to 32, default 16; final: default 128).scene_id· string · optionnel
scene_id returned by an earlier call (reuses the uploaded scene without sending it again).frame_end· integer · optionnel
Last frame to render (inclusive); equal to frame_start for a single image. With orbit=True and no frame_end, one full turn is rendered.frame_start· integer · optionnel
First frame to render (inclusive).
Exemple d'appel{"name": "render_estimate", "arguments": {"kind": "texte", "width": 1, "frames": "texte", "height": 1, "preset": "texte", "cameras": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - render_final≈ 2642 tokens
Render 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 same environment and blender as the approved preview. 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.
Paramètres, retour & exemple (29)
Paramètresfps· integer · optionnel
Frames per second of the video output (default 24).orbit· boolean · optionnel
True: turntable; an orbit camera circles the scene once (the scene's own camera is not used). Flat floors and walls are ignored when framing. A preview without frames shows 0/90/180/270 degrees; a final without frame_end renders the whole turn as an MP4. Best for imported models and product videos.width· integer · optionnel
Output width in pixels (previews are capped at 1280x720 keeping the aspect ratio; a final frame can have at most 1920x1080 pixels on free time, 3840x2160 on prepaid credit).camera· string · optionnel
Name of the camera object to render from (default: the scene's active camera, or an automatic camera if there is none). Ignored with orbit=True; not combinable with cameras.engine· string · optionnel
'' or 'cycles' (path tracing, default) | 'eevee' (real-time rasterizer: about half the per-frame cost on animations of a few dozen frames or more; each job pays about 7 s of shader compilation, so previews stay on Cycles).height· integer · optionnel
Output height in pixels (previews are capped at 1280x720 keeping the aspect ratio; a final frame can have at most 1920x1080 pixels on free time, 3840x2160 on prepaid credit).output· string · optionnel
'auto' (mp4 for a frame range, png for one frame) | 'png' | 'exr' (16-bit linear frames for compositing) | 'mp4' (H.264) | 'webm' (VP9) | 'prores' (Apple ProRes 422 HQ .mov, for editing) | 'gif' | 'webp' (animated, at most 960 px wide; good for chat and web).preset· string · optionnel
Purpose preset: 'product' (4 studio shots at 0/90/180/270 deg on a plain backdrop; the final gives 4 PNGs at 1440x1440), 'turntable' (one full turn as an MP4, studio light, plain backdrop), 'animation' (the scene's own camera, lights and frame range; the scene is read first when the range is unknown), or '' (none). It fills what you do not pass; environment, orbit_frames, width/height and the frames still win when given.blender· string · optionnel
Blender version: '' (default: a .blend opens with the version it was saved in, other scenes with 5.0) or '5.0' / '5.2' (also '4.5', '4.2', '3.6'; a script that stops on Blender 5 because of an older API is rendered again on those automatically) to choose.cameras· ? · optionnel
Several camera object names (up to 8) rendered from the same frame in one job: the preview tiles them in one labeled sheet, the final returns one PNG/EXR per camera (camera_files maps names to files). For product shots from fixed angles. Not combinable with orbit, environment='compare' or camera.max_yen· integer · optionnel
Ceiling for this job in JPY (-1 = none): the job is refused before anything is reserved when its reservation would exceed it. 0 means 'only if it fits the free time'.samples· integer · optionnel
Cycles samples per pixel (preview: up to 32, default 16; final: default 128).scene_id· string · optionnel
scene_id returned by an earlier call (reuses the uploaded scene without sending it again).frame_end· integer · optionnel
Last frame to render (inclusive); equal to frame_start for a single image. With orbit=True and no frame_end, one full turn is rendered.scene_url· string · optionnel
https link to a .blend, a .py script or a 3D file (.glb/.gltf/.fbx/.usd/.obj/.stl/.ply/.abc); the service fetches it (e.g. the sample https://render.janction.jp/samples/cube_scene.py, or a 12-hour /upload link). A .gltf or .obj also brings its .bin / .mtl / textures from the same folder.asset_urls· ? · optionnel
Extra files sent with the scene: https links (textures, glTF .bin) or 'polyhaven:<id>' CC0 assets from asset_search ('polyhaven:<id>@2k' for 2k textures). A .blend finds them through relative paths (same folder); a script through os.environ['JR_ASSETS_DIR'] or the jr_assets helpers.notify_url· string · optionnel
Optional https URL that receives one JSON POST when the final render finishes (job.done / job.failed, with download links), so nobody has to poll.environment· string · optionnel
Lighting preset: '' (the scene's own world), 'studio', 'sunset', 'overcast' or 'night' (bundled HDRIs; a good first render for scenes without lighting work), or 'compare' (preview only: all four in one labeled 2x2 image, to pick one).frame_start· integer · optionnel
First frame to render (inclusive).transparent· boolean · optionnel
True renders on a transparent background (alpha) for product shots and overlays; png / exr / webm / gif / webp keep it, mp4 and prores cannot. The preview sheet shows it over dark grey.orbit_frames· integer · optionnel
Number of frames for one full turn (default 24).orbit_target· string · optionnel
Object name or 'x,y,z' to centre the orbit on (default: the scene's main objects).scene_script· string · optionnel
The scene as bpy Python code (text). No file and no local Blender needed; the service runs it in Blender 5.0 (5.2 with blender='5.2'). Blender 5.0 API notes: materials are node-based, so set a colour on the Principled BSDF (mat.node_tree.nodes['Principled BSDF'].inputs['Base Color'].default_value = (r, g, b, 1)); mat.diffuse_color only affects the viewport; do not set Material.use_nodes. Animate with obj.keyframe_insert() (action.fcurves no longer exists; set bpy.context.preferences.edit.keyframe_new_interpolation_type = 'LINEAR' first for constant speed). Build the scene, camera and frame range only; leave resolution, samples and denoising to the service. Helpers: `import jr_assets`, then jr_assets.frame_camera(margin=1.1) points the camera at every object and fits them in the frame; jr_assets.import_model('<id>'), jr_assets.material('<id>') and jr_assets.world_hdri('<id>') use Poly Haven assets passed in asset_urls.orbit_distance· number · optionnel
Multiplier for the orbit camera distance (default 1.0).idempotency_key· string · optionnel
Any string up to 128 characters that identifies this order: sending the same key again returns the first job instead of rendering twice (a different body with the same key is refused).orbit_elevation· number · optionnel
Orbit camera elevation in degrees (default 18).storage_project· string · optionnel
JANCTION Storage project id to continue (from a Storage project's Render again); the result is saved into that project when saving to Storage is on for this key, otherwise ignored.environment_visible· boolean · optionnel
False hides the HDRI from the camera (flat grey backdrop, HDRI lighting only).environment_strength· number · optionnel
Multiplier for the HDRI preset's brightness (default 1.0).
Exemple d'appel{"name": "render_final", "arguments": {"fps": 1, "orbit": true, "width": 1, "camera": "texte", "engine": "texte", "height": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - render_info≈ 314 tokens
Check 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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "render_info", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - render_preview≈ 2191 tokens
Show 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.
Paramètres, retour & exemple (22)
Paramètresorbit· boolean · optionnel
True: turntable; an orbit camera circles the scene once (the scene's own camera is not used). Flat floors and walls are ignored when framing. A preview without frames shows 0/90/180/270 degrees; a final without frame_end renders the whole turn as an MP4. Best for imported models and product videos.width· integer · optionnel
Output width in pixels (previews are capped at 1280x720 keeping the aspect ratio; a final frame can have at most 1920x1080 pixels on free time, 3840x2160 on prepaid credit).camera· string · optionnel
Name of the camera object to render from (default: the scene's active camera, or an automatic camera if there is none). Ignored with orbit=True; not combinable with cameras.engine· string · optionnel
'' or 'cycles' (path tracing, default) | 'eevee' (real-time rasterizer: about half the per-frame cost on animations of a few dozen frames or more; each job pays about 7 s of shader compilation, so previews stay on Cycles).frames· string · optionnel
Preview frames: '' = frame 1; '12' = one frame; '1,8,16,24' or '1-24' = up to 4 frames tiled in one labeled image (to judge camera motion and animation; same GPU time as one 720p frame).height· integer · optionnel
Output height in pixels (previews are capped at 1280x720 keeping the aspect ratio; a final frame can have at most 1920x1080 pixels on free time, 3840x2160 on prepaid credit).preset· string · optionnel
Purpose preset: 'product' (4 studio shots at 0/90/180/270 deg on a plain backdrop; the final gives 4 PNGs at 1440x1440), 'turntable' (one full turn as an MP4, studio light, plain backdrop), 'animation' (the scene's own camera, lights and frame range; the scene is read first when the range is unknown), or '' (none). It fills what you do not pass; environment, orbit_frames, width/height and the frames still win when given.blender· string · optionnel
Blender version: '' (default: a .blend opens with the version it was saved in, other scenes with 5.0) or '5.0' / '5.2' (also '4.5', '4.2', '3.6'; a script that stops on Blender 5 because of an older API is rendered again on those automatically) to choose.cameras· ? · optionnel
Several camera object names (up to 8) rendered from the same frame in one job: the preview tiles them in one labeled sheet, the final returns one PNG/EXR per camera (camera_files maps names to files). For product shots from fixed angles. Not combinable with orbit, environment='compare' or camera.samples· integer · optionnel
Cycles samples per pixel (preview: up to 32, default 16; final: default 128).scene_id· string · optionnel
scene_id returned by an earlier call (reuses the uploaded scene without sending it again).scene_url· string · optionnel
https link to a .blend, a .py script or a 3D file (.glb/.gltf/.fbx/.usd/.obj/.stl/.ply/.abc); the service fetches it (e.g. the sample https://render.janction.jp/samples/cube_scene.py, or a 12-hour /upload link). A .gltf or .obj also brings its .bin / .mtl / textures from the same folder.asset_urls· ? · optionnel
Extra files sent with the scene: https links (textures, glTF .bin) or 'polyhaven:<id>' CC0 assets from asset_search ('polyhaven:<id>@2k' for 2k textures). A .blend finds them through relative paths (same folder); a script through os.environ['JR_ASSETS_DIR'] or the jr_assets helpers.environment· string · optionnel
Lighting preset: '' (the scene's own world), 'studio', 'sunset', 'overcast' or 'night' (bundled HDRIs; a good first render for scenes without lighting work), or 'compare' (preview only: all four in one labeled 2x2 image, to pick one).transparent· boolean · optionnel
True renders on a transparent background (alpha) for product shots and overlays; png / exr / webm / gif / webp keep it, mp4 and prores cannot. The preview sheet shows it over dark grey.orbit_frames· integer · optionnel
Number of frames for one full turn (default 24).orbit_target· string · optionnel
Object name or 'x,y,z' to centre the orbit on (default: the scene's main objects).scene_script· string · optionnel
The scene as bpy Python code (text). No file and no local Blender needed; the service runs it in Blender 5.0 (5.2 with blender='5.2'). Blender 5.0 API notes: materials are node-based, so set a colour on the Principled BSDF (mat.node_tree.nodes['Principled BSDF'].inputs['Base Color'].default_value = (r, g, b, 1)); mat.diffuse_color only affects the viewport; do not set Material.use_nodes. Animate with obj.keyframe_insert() (action.fcurves no longer exists; set bpy.context.preferences.edit.keyframe_new_interpolation_type = 'LINEAR' first for constant speed). Build the scene, camera and frame range only; leave resolution, samples and denoising to the service. Helpers: `import jr_assets`, then jr_assets.frame_camera(margin=1.1) points the camera at every object and fits them in the frame; jr_assets.import_model('<id>'), jr_assets.material('<id>') and jr_assets.world_hdri('<id>') use Poly Haven assets passed in asset_urls.orbit_distance· number · optionnel
Multiplier for the orbit camera distance (default 1.0).orbit_elevation· number · optionnel
Orbit camera elevation in degrees (default 18).environment_visible· boolean · optionnel
False hides the HDRI from the camera (flat grey backdrop, HDRI lighting only).environment_strength· number · optionnel
Multiplier for the HDRI preset's brightness (default 1.0).
Exemple d'appel{"name": "render_preview", "arguments": {"orbit": true, "width": 1, "camera": "texte", "engine": "texte", "frames": "texte", "height": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - render_share≈ 510 tokens
Publish 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.
Paramètres, retour & exemple (6)
Paramètresnote· string · optionnel
A sentence shown under the image on the share page (optional).title· string · optionnel
Title shown on the public share page (optional).job_id· string · requis
The job_id returned by render_preview or render_final (j_...; a long final split into parts is b_...). Only this key's jobs; in render_status, leave it empty to list them.listed· boolean · optionnel
True asks for the page to appear in the public gallery after the operator reviews it.prompt· string · optionnel
What the user asked you, in their words (shown as 'what the user asked the agent').include_script· boolean · optionnel
True also publishes the bpy script on the share page.
Exemple d'appel{"name": "render_share", "arguments": {"job_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - render_status≈ 293 tokens
Check 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.
Paramètres, retour & exemple (1)
Paramètresjob_id· string · optionnel
The job_id returned by render_preview or render_final (j_...; a long final split into parts is b_...). Only this key's jobs; in render_status, leave it empty to list them.
Exemple d'appel{"name": "render_status", "arguments": {"job_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - render_unshare≈ 299 tokens
Take 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.
Paramètres, retour & exemple (1)
Paramètresjob_id· string · requis
The job_id returned by render_preview or render_final (j_...; a long final split into parts is b_...). Only this key's jobs; in render_status, leave it empty to list them.
Exemple d'appel{"name": "render_unshare", "arguments": {"job_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - scene_info≈ 803 tokens
Read 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.
Paramètres, retour & exemple (5)
Paramètresblender· string · optionnel
Blender version: '' (default: a .blend opens with the version it was saved in, other scenes with 5.0) or '5.0' / '5.2' (also '4.5', '4.2', '3.6'; a script that stops on Blender 5 because of an older API is rendered again on those automatically) to choose.scene_id· string · optionnel
scene_id returned by an earlier call (reuses the uploaded scene without sending it again).scene_url· string · optionnel
https link to a .blend, a .py script or a 3D file (.glb/.gltf/.fbx/.usd/.obj/.stl/.ply/.abc); the service fetches it (e.g. the sample https://render.janction.jp/samples/cube_scene.py, or a 12-hour /upload link). A .gltf or .obj also brings its .bin / .mtl / textures from the same folder.asset_urls· ? · optionnel
Extra files sent with the scene: https links (textures, glTF .bin) or 'polyhaven:<id>' CC0 assets from asset_search ('polyhaven:<id>@2k' for 2k textures). A .blend finds them through relative paths (same folder); a script through os.environ['JR_ASSETS_DIR'] or the jr_assets helpers.scene_script· string · optionnel
The scene as bpy Python code (text). No file and no local Blender needed; the service runs it in Blender 5.0 (5.2 with blender='5.2'). Blender 5.0 API notes: materials are node-based, so set a colour on the Principled BSDF (mat.node_tree.nodes['Principled BSDF'].inputs['Base Color'].default_value = (r, g, b, 1)); mat.diffuse_color only affects the viewport; do not set Material.use_nodes. Animate with obj.keyframe_insert() (action.fcurves no longer exists; set bpy.context.preferences.edit.keyframe_new_interpolation_type = 'LINEAR' first for constant speed). Build the scene, camera and frame range only; leave resolution, samples and denoising to the service. Helpers: `import jr_assets`, then jr_assets.frame_camera(margin=1.1) points the camera at every object and fits them in the frame; jr_assets.import_model('<id>'), jr_assets.material('<id>') and jr_assets.world_hdri('<id>') use Poly Haven assets passed in asset_urls.
Exemple d'appel{"name": "scene_info", "arguments": {"blender": "texte", "scene_id": "texte", "scene_url": "texte", "asset_urls": "texte", "scene_script": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».