MoonRay MCP
Allows rendering, inspecting, and diagnosing OpenMoonRay scenes through Houdini's husk and HdMoonrayRendererPlugin, including launching the interactive viewer, validating scenes, and managing batch renders.
Click on "Install 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., "@MoonRay MCPRender /scenes/hero.usd with 64 samples and show preview"
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.
MoonRay MCP
An independent Model Context Protocol server for rendering, inspecting, and diagnosing OpenMoonRay scenes.
MoonRay MCP gives an MCP-compatible client typed control over a local MoonRay
runtime. It supports Houdini's husk and HdMoonrayRendererPlugin, an optional
native hd_render control host, and MoonRay's standalone viewer. Batch renders
run in separate processes so a renderer failure does not take down the MCP
server.
This is an independent, early-stage integration project. It is not affiliated with, endorsed by, or an official release of DreamWorks Animation or the OpenMoonRay project.
Naming
The GitHub repository is named moonray_mcp to follow the underscore-based
naming used by related MoonRay component repositories. The installable Python
distribution and command use moonray-mcp, while the Python import package is
moonray_mcp.
Related MCP server: KeyShot MCP
What it provides
moonray_health: verify the staged runtime, tools, and Hydra delegatemoonray_capabilities: describe supported inputs and implemented controlsmoonray_resources: check memory, disk, load, and competing render processesinspect_scene: summarize a USD stage and recommend an authored cameralaunch_interactive_viewer: open USD or RDL in MoonRay's standalone viewerswitch_interactive_viewer_aov: select a named AOV in the live viewerset_interactive_viewer_exposure: adjust live display exposureset_interactive_viewer_denoising: turn live denoising explicitly on or offcapture_interactive_viewer_snapshot: save raw EXR and visible display PNG snapshotsinteractive_viewer_preview: return the visible viewer image directly to the clientinteractive_viewer_status/stop_interactive_viewer: inspect or close itvalidate_scene: preflight USD and RDL scenesinspect_materials: explain source shaders, MoonRay translations, textures, active lobes, and unsupported MaterialX nodesstart_render: enqueue a process-isolated render and return a stable job IDrender_status: inspect an active or saved jobpause_render/resume_render: control an active native-host renderresume_from_checkpoint: start a new native render from a saved recovery pointcapture_render_snapshot: write a live EXR and PNG from the native render bufferrender_preview: return the latest live or completed PNG previewcancel_render: stop a queued or active renderrender_result: return the JSON report and PNG previewcompare_renders: compare completed jobs or image files and return linear error metrics plus EXR and PNG difference imagesrun_comparison_manifest: reproduce a named set of comparisons with optional expected RMS values and tolerances
Native jobs can select a primary Hydra AOV such as color, normal, depth,
primId, primvars:name, lpe:expression, or shader:name. Live and final
snapshots preserve that selection in the job report.
Native color and beauty jobs can also set denoise=true to apply Intel Open
Image Denoise (OIDN) to the beauty output. Denoising defaults to off, is
recorded in the job report, and is rejected for diagnostic AOVs and the husk
backend. Albedo and normal guidance remain off in this first control slice.
Set samples=64 on a native job to request 64 uniform samples per pixel. The
MCP translates total samples per pixel into MoonRay's square-root convention,
so 64 is passed to the renderer as pixel_samples=8. Sample overrides must be
perfect squares; leaving samples unset preserves the value authored in the
scene.
Native color and beauty jobs can set checkpoint_interval_seconds to write a
resumable EXR while rendering. After a checkpoint is ready, canceling or losing
the original process does not discard that work: resume_from_checkpoint
starts a new job with the same request and records its parent job and source
checkpoint. Resume is rejected if the source USD changed after the checkpoint
was created. The normal beauty EXR and PNG preview are extracted without
modifying MoonRay's resumable channels and metadata.
Each job preserves its source hash, settings, resource preflight, native MoonRay progress, estimated time remaining, renderer log, translated RDL, beauty EXR, PNG preview, image statistics, diagnostics, timing, and peak process memory in a versioned JSON report.
Interactive viewer
launch_interactive_viewer opens a visible moonray_gui_v2 window without a
Houdini viewport. USD input is converted to MoonRay RDL first with
hd_usd2rdl; RDL input opens directly. The tool accepts resolution, frame,
camera, free-camera mode, and auto, xpu, vectorized, or scalar execution
modes. It returns a stable viewer ID for interactive_viewer_status and
stop_interactive_viewer, plus paths to the translated scene, viewer log,
optional final EXR, and durable JSON report.
Viewer launches include beauty, albedo, normal, depth, and wireframe displays.
Use switch_interactive_viewer_aov to select one by name while the window is
open. Launches can also override the scene's samples per pixel with a perfect
square value. Exposure, denoising, and snapshots can be controlled while the
viewer remains open. Each snapshot includes a raw EXR for downstream work and
a PNG matching the currently visible AOV, exposure, denoising, and display
transform. Live status reflects changes made through either MCP or the viewer
UI. The viewer's native , and . keys still cycle backward and forward.
interactive_viewer_preview can capture and return that visible PNG as MCP
image content, so the current AOV and display treatment appear directly in a
client rather than only as a filesystem path. Set capture=false to return the
most recent viewer snapshot without writing a new one.
Only one viewer or batch renderer is admitted at a time. Closing the MCP server also closes any viewer it owns, so an abandoned client cannot leave a hidden renderer running.
Scene inspection
inspect_scene opens a USD stage read-only through Houdini's OpenUSD runtime.
It reports stage units and time range, prim and scene-element counts, authored
cameras, lights, render products, unresolved asset attributes, and a suggested
camera. An authored render-product camera wins; otherwise a clearly named shot,
render, main, or hero camera is preferred before falling back to the first
camera. The recommendation is reported explicitly and never modifies the scene.
Requirements
macOS with Python 3.11 or newer
Houdini 22 with
husk, USD tools, and OpenImageIO toolsa staged MoonRay Houdini runtime containing
HdMoonrayRendererPluginlibcomputation_progmcrt.dylibin the runtime'slibdirectoryhd_usd2rdlandmoonray_gui_v2for standalone USD viewing
MoonRay itself is not bundled with this repository. Build and stage OpenMoonRay separately, then point this server at that runtime.
Install
python3.11 -m venv .venv
.venv/bin/pip install -e .Configure the runtime and output directory:
export MOONRAY_MCP_RUNTIME=/absolute/path/to/openmoonray-houdini-runtime
export MOONRAY_MCP_OUTPUT_ROOT=/absolute/path/to/moonray-mcp-jobsMOONRAY_MCP_RUNTIME defaults to ~/.local/share/moonray-mcp/runtime, and
MOONRAY_MCP_OUTPUT_ROOT defaults to ~/.local/share/moonray-mcp/jobs.
MOONRAY_MCP_SETUP_SCRIPT can override the expected runtime setup script.
MOONRAY_MCP_NATIVE_HOST optionally selects a controllable hd_render build;
otherwise the server looks for bin/hd_render inside the staged runtime.
MOONRAY_MCP_USD_TO_RDL and MOONRAY_MCP_INTERACTIVE_VIEWER can override the
translator and standalone viewer executables.
start_render uses the certified husk backend by default. Set its backend
argument to native to opt into live status, pause, resume, snapshot, and
cooperative cancellation through the control host. Set aov to select the
native render buffer; non-color AOV selection is intentionally rejected by the
default husk backend until a scene-safe render-product overlay is available.
Run the stdio server with:
.venv/bin/moonray-mcpAn MCP client registration example is available at
examples/mcp.json.
The Zeltner regression example at
examples/regressions/zeltner.json uses
MOONRAY_ZELTNER_FIXTURE_ROOT to locate its external image set and preserves
the historical RGBA metric convention explicitly.
Safety model
The server binds no network port and exposes no arbitrary command execution. Scene paths, camera paths, resolution, and job IDs are validated. Renders are serialized through one worker, source scenes are never modified, and launch is blocked when memory or disk space is critical or another local MoonRay render is already active.
Development
.venv/bin/python -m unittest discover -s tests -v
.venv/bin/python -m compileall -q src/moonray_mcpRun the opt-in Cornell render certification against a configured runtime with:
MOONRAY_MCP_INTEGRATION=1 \
MOONRAY_MCP_RUNTIME=/absolute/path/to/openmoonray-houdini-runtime \
.venv/bin/python -m unittest tests.test_cornell_integration -vCertify the native control path separately after installing a controllable
hd_render host:
MOONRAY_MCP_NATIVE_INTEGRATION=1 \
MOONRAY_MCP_RUNTIME=/absolute/path/to/openmoonray-houdini-runtime \
MOONRAY_MCP_NATIVE_HOST=/absolute/path/to/hd_render \
.venv/bin/python -m unittest tests.test_cornell_integration -vThe current implementation plan and future phases are documented in
docs/roadmap.md.
Status
Version 0.1.0 establishes the MCP protocol, resource admission, persistent job
model, output validation, and failure reporting. The full Cornell-box path is
certified through the MCP at 128x128, including active-render cancellation with
durable provenance and orphan-process checks. Native MoonRay progress is
certified through both completed and actively canceled MCP jobs. Material
inspection covers source USD, translated RDL snapshots, missing textures,
UDIMs, and .tx availability. The comparison workflow adds durable RMS, mean,
peak-SNR, and maximum-error reports without grading visual equivalence. The
earlier render-preparation crash was traced to stale DwaBase-derived material
DSOs after an ABI-changing header update; rebuilding all dependent DSOs
resolved it. The native hd_render backend is certified through the MCP for
status, stable pause/resume, live snapshots, cooperative cancellation, and
orphan cleanup. Primary AOV selection and live retrieval are also certified
with the Cornell fixture's normal AOV. Automatic beauty checkpoints and
cross-process resume are certified through a 256x256 Cornell job that saved a
checkpoint, canceled its original process, and completed from a new process.
License
The original code and documentation in this repository are licensed under the Apache License 2.0.
MoonRay, OpenMoonRay, Houdini, and other external applications, libraries, and assets are not distributed as part of this repository. They remain subject to their respective licenses and trademarks. The Apache 2.0 license for this project does not grant rights to those separately distributed components.
Available Tools
25 toolscancel_renderA
Cancel a queued or active render without leaving an orphan process.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | 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 discloses a key behavioral trait: cancellation ensures no orphan process is left behind, which is beyond a simple 'cancel' statement. It doesn't cover error handling or reversibility, but the main side effect is addressed.
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 a single efficient sentence that fronts the core action ('Cancel a queued or active render') and adds a valuable behavioral guarantee. 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?
The tool is simple (one param, no output schema), but the lack of parameter description means the agent may not fully understand how to specify the job_id. The description covers purpose and behavior but leaves the parameter semantics to inference, so it is not fully complete.
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 the description does not elaborate on the job_id parameter. It does not explain what job_id refers to or any format requirements. The agent must infer from context that it identifies the render job, but this is not explicitly stated.
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 clearly states the tool cancels a queued or active render, specifying the verb (cancel) and resource (render). It also adds the nuance of avoiding orphan processes, which distinguishes it from just any cancellation. It distinguishes from sibling pause/resume by indicating a permanent stop.
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 provides clear context about when to use it (for queued or active renders) but does not explicitly mention alternatives like pause_render or state when not to use it. However, the context is sufficient for an agent to infer the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_interactive_viewer_snapshotB
Save the viewer as a raw EXR and a display-referred PNG.
| Name | Required | Description | Default |
|---|---|---|---|
| viewer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does disclose the core behavior and output formats, including the 'display-referred' PNG detail, which adds beyond the tool name. However, it does not mention where files are saved, whether the operation is synchronous or asynchronous, or whether it overwrites existing files.
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 a single, concise sentence with no filler. Every word contributes to explaining the action and the output formats, and the key information is front-loaded.
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?
The tool has no annotations and no output schema, so the description must explain the operation and its effects. It covers the output formats but omits practical details such as where snapshots are written, what the tool returns after saving, and whether it requires an already-running viewer. This is a meaningful gap for an agent deciding how to invoke and interpret the result.
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 explain the viewer_id parameter beyond implying the target viewer. This is minimal compensation for the lack of parameter documentation, though the single parameter's purpose is inferable from the tool context.
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 uses a specific verb ('Save') and resource ('the viewer') and clearly states the output formats: a raw EXR and a display-referred PNG. This is distinct enough to separate it from sibling tools like capture_render_snapshot or interactive_viewer_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?
There is no guidance about when to use this tool versus alternatives, nor any mention of prerequisites such as an active interactive viewer. The description simply states what the tool does without contextualizing it against sibling tools like capture_render_snapshot.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_render_snapshotB
Request a current-frame EXR and PNG preview from a native-host render.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals that the tool requests a snapshot, but it does not disclose whether the call is blocking or asynchronous, whether it is read-only, whether a render must be actively running, or what the caller can expect in the response.
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 a single, front-loaded sentence with no filler. It introduces the action, the output type, and the scope without repeating schema 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?
With no output schema and no annotations, the description should explain the return behavior and preconditions, but it leaves these implicit. The distinction from interactive-viewer snapshot tools is only implied through the phrase 'native-host render,' and no guidance is given about valid job states or failure cases.
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?
The schema has a single required parameter, job_id, with 0% description coverage, and the description does not explain what job_id refers to or where the caller should obtain it. 'Native-host render' gives some context, but it does not compensate for the lack of parameter 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 action ('Request'), a specific resource ('current-frame EXR and PNG preview'), and a specific context ('native-host render'). This clearly differentiates it from the sibling capture_interactive_viewer_snapshot, which targets an interactive viewer.
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?
The phrase 'native-host render' provides a useful context cue that this tool is meant for render jobs rather than interactive viewer sessions, but it does not explicitly state when to use this tool over alternatives like capture_interactive_viewer_snapshot or render_preview, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_rendersB
Compare two completed job IDs or image paths and return a difference image.
| Name | Required | Description | Default |
|---|---|---|---|
| channels | No | R,G,B | |
| candidate | Yes | ||
| reference | 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 provided, the description carries the burden of explaining behavior. It states the input type, the comparison operation, and the output, which is useful but minimal. It does not disclose prerequisites, whether the operation is read-only, how channels affect the comparison, or what happens on mismatch/error.
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 a single, concise sentence that front-loads the core action and output. Every word earns its place, with 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?
The tool is simple and has an output schema, so return-value details are not required. However, the missing documentation for the channels parameter and the lack of usage guidance or alternative routing make the description only minimally complete for correct invocation.
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. It clarifies that reference and candidate are completed job IDs or image paths, but it does not explain the 'channels' parameter at all, even though it has a default of 'R,G,B' and is likely important for the comparison. This leaves one of three parameters effectively undocumented.
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 clearly states the action ('Compare two completed job IDs or image paths') and the result ('return a difference image'), so an agent knows what the tool does. It does not explicitly differentiate from sibling tools like run_comparison_manifest, but the purpose is specific enough to avoid confusion.
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?
The description implies when to use the tool: when two completed job IDs or image paths need to be compared and a difference image is desired. However, it does not provide explicit guidance on when not to use it or mention alternatives such as run_comparison_manifest, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_materialsC
Inspect source materials, textures, and a job's translated MoonRay RDL.
| Name | Required | Description | Default |
|---|---|---|---|
| scene | No | ||
| job_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. 'Inspect' implies a read-only operation, and mentioning 'translated MoonRay RDL' adds useful context about what is actually being examined. However, it does not describe output behavior, errors, or whether any state changes occur.
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 a single focused sentence with no filler, and it front-loads the action verb. It is concise and readable, though it sacrifices useful detail for brevity.
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?
The description gives a clear high-level purpose but is incomplete for a tool with no output schema, no parameter descriptions, and no annotations. The agent does not learn what the tool returns, how optional parameters behave, or whether scene and job_id are mutually exclusive or combinable.
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 for the undocumented scene and job_id parameters. It only hints that a 'job' is involved via 'a job's translated MoonRay RDL' and never explains how scene maps to the described resources. The mapping is left mostly to inference.
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 uses a specific verb ('Inspect') and names concrete resources: source materials, textures, and a job's translated MoonRay RDL. This distinguishes it from siblings like inspect_scene and validate_scene, though the differentiation is implicit rather than explicit.
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 guidance is given about when to use this tool versus siblings such as inspect_scene or validate_scene. There are no exclusions, prerequisites, or alternative routing hints, so the agent must infer usage entirely from the tool name and minimal description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_sceneB
Summarize a USD stage and recommend an authored camera for rendering.
| Name | Required | Description | Default |
|---|---|---|---|
| scene | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden, yet it only states the operation's purpose. It does not disclose whether the operation is read-only, what side effects occur, how the camera is selected, or what output the agent should expect.
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 entire description is one front-loaded sentence with no wasted words. It states the main action, the target resource, and the useful camera-recommendation outcome efficiently.
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 tool with one parameter and no annotations or output schema, this is thin: it omits the expected response shape, what 'authored camera' means in practice, and any prerequisites such as a loaded or resolved USD stage. An agent could invoke it, but it would be guessing about behavior and return value.
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 explain the lone 'scene' parameter; it adds only that the tool summarizes a 'USD stage,' giving a general domain but no format, path, or identifier requirements. The agent still has to guess what string value to pass beyond the parameter name.
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 names a specific action—'Summarize a USD stage'—and a concrete deliverable, 'recommend an authored camera for rendering,' so an agent can tell it apart from validation or material-inspection tools. It doesn't explicitly name sibling alternatives, so it misses the highest bar for differentiation.
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?
The phrase 'for rendering' implies the tool is used when preparing a render needs a scene overview and a camera suggestion, but no explicit when-to-use or when-not-to-use guidance is provided. Siblings like validate_scene and inspect_materials are not mentioned, so the agent must infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interactive_viewer_previewC
Return the visible standalone viewer image directly to the MCP client.
| Name | Required | Description | Default |
|---|---|---|---|
| capture | No | ||
| viewer_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It reveals that the image is returned 'directly to the MCP client,' which hints at inline delivery, but it does not disclose side effects, whether a fresh capture occurs, whether the viewer must be active, or what happens if no image is available.
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 a single concise sentence with no filler and gets the core action across immediately. It is slightly under-specified, but it is not bloated or repetitive.
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?
With two parameters, no annotations, and 0% schema coverage, the description leaves important context undefined: what capture means, when this should be used, and what state the viewer must be in. The output schema helps with return shape, but it does not compensate for missing parameter and usage context.
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 for undocumented parameters. It does not explain viewer_id or the capture boolean at all; 'capture' is especially ambiguous and is central to behavior. The tool description adds no meaning beyond the raw schema field names.
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 names a specific verb ('Return'), a resource ('visible standalone viewer image'), and a destination ('to the MCP client'), so an agent can tell this is about retrieving the current viewer image rather than configuring or stopping the viewer. It does not explicitly distinguish itself from capture_interactive_viewer_snapshot, which is a close sibling, so it loses the top score.
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?
There is no guidance on when to use this tool versus alternatives like capture_interactive_viewer_snapshot or render_preview. The description gives no prerequisites (e.g., whether the standalone viewer must be running), no exclusions, and no mention of when 'preview' is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interactive_viewer_statusB
Report whether a standalone MoonRay viewer window is still active.
| Name | Required | Description | Default |
|---|---|---|---|
| viewer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. 'Report whether... is still active' clearly signals a non-mutating status query, but it does not disclose behavior for invalid or stale viewer_id values, return format, or whether the status check can block or poll.
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 a single, front-loaded sentence with no filler. Every word contributes meaning, and it avoids repeating the tool name or schema fields.
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 simple one-parameter status check, the description conveys the core behavior. However, with no output schema and no annotations, it leaves gaps around the return value and viewer_id provenance, making it adequate but not fully complete.
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 explain the viewer_id parameter beyond implying it identifies the viewer window. The parameter name is somewhat self-explanatory, but the description does not compensate for the lack of schema documentation with details on where the ID comes from or what values are valid.
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 uses a specific verb ('Report') and a specific resource ('whether a standalone MoonRay viewer window is still active'). It clearly distinguishes this status-check tool from sibling tools like launch_interactive_viewer, stop_interactive_viewer, and capture_interactive_viewer_snapshot.
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?
The description does not state when to use this tool versus alternatives, nor does it mention prerequisites such as obtaining a viewer_id from launch_interactive_viewer. Usage context is only implied by the tool's name and status-reporting behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_interactive_viewerC
Open a scene in MoonRay's visible standalone interactive viewer.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| scene | Yes | ||
| width | No | ||
| camera | No | ||
| height | No | ||
| samples | No | ||
| free_camera | No | ||
| execution_mode | No | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, and it only adds 'visible standalone interactive' qualifiers. It does not say whether the call blocks, spawns a process, requires a display, or what result the agent should expect.
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?
Single front-loaded sentence with no wasted words or redundant restating of the tool name. It is concise, though the brevity sacrifices explanatory content scored under other dimensions.
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 launch tool with eight parameters, no annotations, and no output schema, one bare sentence is insufficient. The agent lacks enough context about invocation behavior and parameter effects to use it confidently.
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 compensate for the eight parameters. Only the scene parameter is implied by 'Open a scene'; frame, camera, width, height, samples, free_camera, and execution_mode are left entirely unexplained.
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 action (open/launch) applied to a scene in a specific target (MoonRay's visible standalone interactive viewer). It is not tautological with the tool name and helps distinguish it from render-oriented siblings, though it does not explicitly name or contrast sibling viewer commands.
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 when-to-use or when-not-to-use guidance is given. The description only says what the tool does and does not indicate when to prefer it over interactive_viewer_preview, render_preview, or related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moonray_capabilitiesB
Describe the scene types, backend, reports, and controls in this build.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Describe' strongly implies a read-only, non-mutating operation, which provides some behavioral clarity. However, it does not disclose return format, whether the call may be expensive, or any other side effects beyond the descriptive intent.
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 a single, tightly worded sentence with no filler. Every element—scene types, backend, reports, controls—earns its place by clarifying the tool's scope, and the main verb is front-loaded.
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 zero-parameter tool without an output schema, the description gives a reasonable outline of what the call will tell the agent. However, it is short on context such as when this capability report is useful, how it relates to health/resource checks, or what form the output takes, leaving some ambiguity about integration into an agent's decision flow.
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?
The tool has zero parameters and the schema is empty, so the baseline is 4. The description's enumeration of what will be described (scene types, backend, reports, controls) adds useful context even though there are no parameters to document.
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 uses a specific verb ('Describe') and a clear resource ('this build') and enumerates the content areas: scene types, backend, reports, and controls. It is distinguishable from sibling tools like moonray_health and moonray_resources because those target health and resources specifically, while this one covers general capabilities, though it doesn't explicitly compare itself to them.
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 guidance is given about when to call this tool versus alternatives such as moonray_health, moonray_resources, or inspect_scene. The description implies it is useful for understanding build capabilities, but it never states a condition or context that would help an agent select it over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moonray_healthC
Check the staged runtime, required tools, and MoonRay Hydra delegate.
| Name | Required | Description | Default |
|---|---|---|---|
| verify_delegate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it only says 'check' and lists items. It does not disclose whether this is read-only, what happens when a required tool or delegate is missing, what it returns, or whether it has side effects.
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?
A single sentence with no filler, front-loading the key verb and objects. It is appropriately sized for a simple health-check tool.
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?
The tool has no output schema and no annotations, so the description should clarify the return value or success/failure semantics, but it does not. The description also lacks usage context such as when this health check is relevant relative to the other moonray and render tools.
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 explain verify_delegate, but it only mentions the delegate in the resource list. The parameter title implies meaning, yet the description does not state what setting it to true or false changes about the check.
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 uses a specific verb and names the resources it inspects: the staged runtime, required tools, and MoonRay Hydra delegate. This distinguishes it from sibling render/viewer commands as a health/diagnostic preflight rather than a rendering or scene-inspection action. The phrase 'staged runtime' is somewhat jargon-heavy but not misleading.
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 when-to-use guidance is given. The description does not state to run this before rendering, when troubleshooting, or instead of moonray_capabilities or moonray_resources, leaving the agent to infer the intended context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moonray_resourcesA
Check memory, disk, CPU load, and conflicting renders before launch.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Check...' without mentioning whether the operation is read-only, what it returns, potential side effects, or any dependencies. For a tool that likely inspects system state, this lack of detail leaves the agent guessing about the tool's behavior and output.
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 a single, focused sentence that states the action and scope with no unnecessary words. It is front-loaded with the core purpose and is easy to parse. Every word earns its place.
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 the tool has no parameters and no output schema, the description provides the basic purpose but omits key details such as the return format or how results should be interpreted. An agent may not know what to expect from the tool's response or how to act on it. The description is minimal and leaves room for ambiguity, especially without annotations to fill the gap.
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?
The tool has zero parameters, so the baseline is 4. The description does not need to explain parameters, and the empty schema provides no additional constraints. The description adequately covers the tool's input needs.
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 clearly states the action ('Check') and the specific resources (memory, disk, CPU load, conflicting renders) and the timing ('before launch'). It distinguishes itself from siblings by focusing on resource and conflict checks, although it does not explicitly name alternatives like moonray_health. The purpose is unambiguous and not a tautology.
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?
The description provides clear context for when to use the tool ('before launch'), indicating it is a pre-flight check. However, it does not explicitly state when not to use it or reference alternative tools, so it falls short of a 5. The contextual cue is sufficient for an agent to infer the appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_renderC
Pause an active native-host render through MoonRay's Hydra delegate.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden but only states the action and object. It does not disclose whether the render can be resumed, whether resources remain allocated, what happens if the render is not active, or any error behavior.
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?
A single, front-loaded sentence that states the action immediately and keeps the qualifiers ('native-host', 'MoonRay's Hydra delegate') brief. Every word contributes to identifying the tool's function.
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 state-changing tool with no annotations and no output schema, the description is too thin. It omits the relationship to resume_render/cancel_render and the meaning or source of job_id, leaving an agent to infer critical invocation context from sibling names.
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 job_id or explain how to obtain it. The schema's title 'Job Id' provides the only clue, so the description adds no value for parameter understanding.
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 uses a specific verb ('Pause') with a precise resource ('active native-host render') and names the technical path ('MoonRay's Hydra delegate'). This clearly distinguishes it from sibling operations like resume_render and cancel_render.
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 guidance is given for when to use this tool versus alternatives such as cancel_render or resume_render. There is no mention of prerequisites (e.g., an active render started by start_render) or of the pause/resume lifecycle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_previewA
Return the newest live snapshot, or the final preview after completion.
| 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?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does convey the read-only nature ('Return') and the two-state behavior (live snapshot vs final preview), but it stays silent on failure modes, whether the call can block or refresh, and how 'newest' is determined. That is adequate but with clear gaps.
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?
One sentence, front-loaded with the action, and every word earns its place. The 'or' clause efficiently captures the two modes.
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?
The presence of an output schema and a single required param lowers the burden, and the description covers the main mode distinction. But with no annotations and a sibling set containing interactive_viewer_preview, render_result, and capture_render_snapshot, the description lacks enough context to prevent selecting the wrong sibling.
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?
The description never says what job_id refers to, how to obtain it, or how it relates to the live/final preview states. With schema_description_coverage at 0%, the description needed to compensate but does not; only the param title 'Job Id' gives any clue.
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 names a specific verb ('Return') and a concrete resource ('newest live snapshot' / 'final preview after completion'), so it clearly identifies a fetch operation tied to render progress. It does not explicitly distinguish itself from siblings such as interactive_viewer_preview or render_result, but the core purpose is unambiguous.
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 provides a clear conditional context: use it to get the latest live preview while a render runs, and the final preview after completion. It does not name exclusions or alternative tools, so it falls just short of full routing advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_resultC
Return a completed job report and its PNG preview when available.
| 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 of disclosing side effects and edge-case behavior. It only states the return contents; it does not say what happens for a missing, incomplete, or failed job, whether it blocks, or whether it is safe/idempotent.
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?
One sentence, no filler, and the core verb and object are front-loaded. It is concise, though 'job report' is somewhat underspecified; a concrete definition of the report format or completion condition would make it fully effective.
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?
The output schema covers return values, so the brief output listing is acceptable. However, for an agent choosing among many render-related siblings, the absence of a completion prerequisite or alternative routing leaves a meaningful gap in selecting and invoking it 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?
The description never mentions job_id or explains that the single parameter identifies the job whose report is returned. With 0% schema description coverage, the description should compensate, but it only relates to the parameter indirectly through the tool's purpose; the schema's title 'Job Id' remains the main semantic cue.
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 uses a specific verb ('Return') and names the resources ('completed job report', 'PNG preview'), making the core purpose understandable. It does not explicitly contrast with siblings like render_status or render_preview, but the completed/report wording distinguishes it from status or intermediate preview tools.
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?
There is no guidance about when to call this tool instead of render_status, render_preview, or capture_render_snapshot. The words 'completed' and 'when available' imply it should be called after job completion, but no explicit condition, prerequisite, or excluded alternative is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_statusB
Return the current phase, elapsed time, diagnostics, and output paths.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. 'Return' clearly signals a read-only operation, and the listed output categories are helpful. However, it does not disclose whether the job must be active, whether it can be polled repeatedly, or what happens for completed/failed renders.
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?
A single front-loaded sentence with zero filler. Every word adds useful information, and the structure is easy to scan.
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 simple read-only status tool the description lists the key return categories, but without an output schema, annotations, or sibling guidance it remains incomplete. An agent still lacks context about valid job_id states, polling semantics, and failure behavior.
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 job_id at all. The parameter's purpose is inferable from its name, but the description adds no meaning about how the id is obtained, its format, or how it maps to a render job.
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 uses a specific verb ('Return') and resource ('current phase, elapsed time, diagnostics, and output paths'), making it clear this is a render status query. The listed fields distinguish it from siblings like render_result, interactive_viewer_status, and render_preview without needing to inspect schemas.
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 guidance is given on when to call this tool versus alternatives such as interactive_viewer_status, render_result, or cancel_render. There are no stated prerequisites, exclusions, or sibling differentiators beyond the implied status-polling use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_from_checkpointC
Start a new native render job from a completed checkpoint EXR.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It mentions the action and source but does not clarify side effects (e.g., whether it terminates existing jobs), permission requirements, or what happens to the checkpoint file. This is a significant gap for a tool that starts a new job.
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 a single, concise sentence that front-loads the primary action. There is no fluff or redundancy, which is efficient. However, its brevity contributes to the lack of substantive guidance, so it does not earn a 5 for being optimally helpful.
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 the tool's complexity (a job-control function with a required parameter) and the absence of annotations and output schema, the description is far too sparse. It omits the meaning of job_id, any behavioral caveats, and how this fits into the broader rendering workflow. The agent cannot reliably call this tool correctly based solely on the description.
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 the description gives no explanation of the required 'job_id' parameter. There is no hint about its format, purpose, or how to obtain a valid value. The agent is left entirely dependent on the schema, which provides only a type and title with no semantic guidance.
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 ('Start'), a resource ('native render job'), and a source ('completed checkpoint EXR'). It clearly indicates starting a fresh job from a checkpoint, which distinguishes it from merely resuming an existing one (e.g., resume_render). However, it does not explicitly contrast with sibling tools like start_render, so it stops short of fully differentiating.
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?
There is no guidance on when to use this tool versus alternatives such as resume_render, start_render, or cancel_render. The description does not mention prerequisites, scenarios, or exclusions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_renderC
Resume an active native-host render through MoonRay's Hydra delegate.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It confirms that resuming is a state-changing operation but does not mention whether it is asynchronous, what happens if the job is already running or invalid, whether it is idempotent, or what error conditions may occur.
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 a single front-loaded sentence with no filler, and it leads with the action before the target. It is concise, though it forgoes the opportunity to include a short usage condition or sibling reference.
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 no-annotation, no-output-schema tool, the description leaves out relevant operational context: how to know whether the job is in a resumable state, whether this differs from resume_from_checkpoint, and what happens after the call. A simple one-parameter tool does not need much, but the missing state and alternative guidance makes it incomplete.
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 the description does not compensate by explaining job_id semantics, format, or where to obtain it. The only implicit link is that job_id identifies the active native-host render to be resumed, which is already mostly inferable from the parameter title.
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 ('Resume') and a specific resource ('active native-host render'), so an agent can tell this is a continuation operation rather than start/cancel. It does not explicitly distinguish itself from the sibling resume_from_checkpoint, though 'active native-host render' hints at a live Hydra render rather than a checkpoint.
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?
The word 'Resume' implies this tool should be used after a render has been paused or otherwise interrupted, and the phrase 'active native-host render' gives a rough precondition. However, it does not explicitly say 'use after pause_render' or discuss when not to use it, leaving the alternative routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_comparison_manifestB
Run a saved image-comparison manifest and preserve aggregate results.
| Name | Required | Description | Default |
|---|---|---|---|
| manifest | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden, but it only hints at persistence via 'preserve aggregate results.' It does not disclose side effects, required setup, whether results are overwritten, authentication needs, or how output is accessed.
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?
A single sentence with no filler; every phrase ('Run', 'saved', 'image-comparison manifest', 'preserve aggregate results') contributes meaning and the core action is front-loaded.
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 tool with no output schema and no annotations, the description is too thin: it omits how results are preserved or returned, what the manifest string should contain, and how this differs from compare_renders. An agent could not reliably invoke it correctly from this description alone.
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?
The schema only gives a string named 'manifest' with 0% description coverage. The description adds the minimal context that the manifest is saved and image-comparison related, but it does not specify whether the value is a path, ID, name, or inline content, leaving the agent without enough to populate the parameter correctly.
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 action ('Run') on a specific resource ('a saved image-comparison manifest') and adds the outcome of preserving aggregate results. The phrase 'saved manifest' differentiates this from direct comparison tools like compare_renders.
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?
The wording implies the tool is for executing previously saved comparison manifests, but it does not explicitly state when to choose it over sibling alternatives or list exclusions. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_interactive_viewer_denoisingA
Turn live standalone viewer denoising explicitly on or off.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | ||
| viewer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full responsibility for disclosing behavior. It reveals the basic toggle action but omits behavioral context: whether the viewer must be running first, whether this affects only the current session, any side effects on rendering, or what happens if the viewer_id is invalid.
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?
A single sentence with no filler. The verb, target, and toggle behavior are all front-loaded and every word earns its place.
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?
The description is minimally adequate for a simple two-parameter boolean setter: schema already supplies the required parameters and types. But with no annotations and no output schema, an agent still lacks guidance on preconditions and expected outcomes, such as whether an active viewer is required or what response indicates success.
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. It adds meaning by tying the action to 'live standalone viewer denoising' and clarifying 'on or off', which maps to the enabled boolean. However, it does not explicitly explain viewer_id, though that parameter is reasonably inferable from the tool name and context.
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 uses a specific verb ('Turn') and names a clear resource ('live standalone viewer denoising') with an explicit binary action ('on or off'). This clearly distinguishes it from sibling tools like set_interactive_viewer_exposure or switch_interactive_viewer_aov.
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?
The use case is implied by the action: call this when you want to explicitly enable or disable denoising in the live standalone viewer. However, it does not describe when this is appropriate versus alternatives, nor does it mention prerequisites such as an already-launched viewer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_interactive_viewer_exposureA
Set the live standalone viewer display exposure from -20 to 20 stops.
| Name | Required | Description | Default |
|---|---|---|---|
| exposure | Yes | ||
| viewer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral burden. It usefully discloses the valid exposure range and the fact that the operation targets the display of the standalone viewer, but it does not mention side effects, persistence, validation of out-of-range values, or the operation's response.
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?
A single, front-loaded sentence communicates the action, target, and constraint with no filler. Every word contributes meaning.
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 simple two-parameter setter, the description covers the core operation and range, but it lacks details on viewer_id semantics and post-call behavior. Given the absence of annotations and output schema, the information is adequate but not fully self-contained.
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 add parameter meaning. It explicitly communicates the exposure range, which goes beyond the bare schema, but it does not describe the viewer_id parameter or how to obtain it; viewer_id is only inferable from the tool name.
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 uses a specific verb ('Set') and a precise resource ('live standalone viewer display exposure') with an explicit range of -20 to 20 stops. This clearly distinguishes it from sibling viewer controls like set_interactive_viewer_denoising or switch_interactive_viewer_aov.
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?
The phrase 'live standalone viewer' gives some context about the target environment, but the description does not state when to prefer this over alternatives or mention any prerequisites. Usage is mostly implied by the tool name and target resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_renderC
Start an asynchronous MoonRay render and immediately return its job ID.
| Name | Required | Description | Default |
|---|---|---|---|
| aov | No | color | |
| frame | No | ||
| scene | Yes | ||
| width | No | ||
| camera | No | ||
| height | No | ||
| backend | No | husk | |
| denoise | No | ||
| samples | No | ||
| checkpoint_interval_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It usefully reveals that the render is asynchronous and returns immediately with a job ID, but it does not mention that a background job is created, that the operation can fail after returning, or how the job can be tracked or cancelled. Partial transparency only.
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 single sentence is front-loaded with the core action and return behavior, with no wasted words. It is efficient, though slightly too sparse to be maximally helpful.
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?
This is a 10-parameter tool with no annotations, no output schema, and zero schema description coverage, yet the description only covers the start/return contract. It omits all optional parameter semantics and any guidance on how to monitor or manage the returned job, leaving the agent under-informed for a real invocation.
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 mentions no parameters at all. With 10 parameters (including scene as required and options like samples, camera, backend, and checkpoint_interval_seconds), the agent receives no semantic help beyond parameter names and types, so the description fails to compensate for the schema gap.
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 uses a specific verb ('Start') and a specific resource ('asynchronous MoonRay render') and clearly states the return value (job ID). This distinguishes it from sibling render-control tools like render_status or cancel_render, as well as interactive-viewer tools like launch_interactive_viewer.
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?
There is no guidance on when to choose this tool over alternatives such as launch_interactive_viewer or render_preview, and no exclusions or conditions are stated. The word 'asynchronous' hints at batch use, but the agent is left to infer the selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_interactive_viewerA
Close a standalone MoonRay viewer owned by this MCP process.
| Name | Required | Description | Default |
|---|---|---|---|
| viewer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral constraints on its own. It usefully restricts the operation to standalone viewers owned by the MCP process, preventing agents from attempting to close external viewers. Yet it does not describe error behavior for unknown or already-closed viewer IDs, whether closing is idempotent, or what result is returned.
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 entire description is one front-loaded sentence that states the action and its scope without filler. Every word earns its place; no unnecessary details are included.
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 one-parameter close operation this is minimally adequate, especially because 'owned by this MCP process' clarifies the applicable viewer set. However, with no output schema and no annotations, the description leaves the agent without guidance on return values, failure modes, or prerequisite checks such as verifying viewer status first.
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?
The schema provides only a required 'viewer_id' string with no description (0% schema description coverage). The description does not mention viewer_id at all, leaving the agent to infer from the parameter name and tool name that it identifies the viewer to close; it does not explain where to obtain it or any expected format.
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 uses a specific verb, 'Close,' and identifies the exact resource: 'a standalone MoonRay viewer owned by this MCP process.' This clearly separates the tool from sibling tools such as launch_interactive_viewer, set_interactive_viewer_exposure, and capture_interactive_viewer_snapshot, which perform different operations on the same resource type.
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?
The phrase 'owned by this MCP process' implies the tool is for closing viewers that this process launched, giving some context. However, it does not explicitly state when to prefer this over alternatives, how to confirm a viewer is owned by the process, or what to do if the viewer is already closed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_interactive_viewer_aovA
Switch a live standalone viewer to beauty, albedo, normal, depth, or wireframe.
| Name | Required | Description | Default |
|---|---|---|---|
| aov | Yes | ||
| viewer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses that the tool switches AOVs, but does not mention prerequisites like whether the viewer must be running, side effects on the existing render state, or failure behavior. This is a significant gap for an action that mutates viewer state.
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 a single well-structured sentence with no filler. The action, target, and accepted values are all front-loaded and immediately actionable.
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 two-parameter switching tool, the description covers the core purpose and value domain. However, with no annotations and no output schema, it leaves the agent to infer prerequisites and behavioral effects, such as whether the viewer must already be launched and what happens if it is not live.
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%, but the description compensates for the aov parameter by listing all meaningful values (beauty, albedo, normal, depth, wireframe). The viewer_id parameter is not explicitly explained, but it is reasonably clear from the term 'viewer' and the tool name.
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 uses a specific verb ('Switch') and resource ('live standalone viewer') and enumerates the exact target values: beauty, albedo, normal, depth, or wireframe. This clearly distinguishes it from sibling tools like set_interactive_viewer_exposure or capture_interactive_viewer_snapshot.
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?
The phrase 'live standalone viewer' provides clear context for when this tool applies, and differentiates it from render-pipeline and snapshot/capture tools. It does not explicitly state when not to use it or name alternatives, but the intended usage is readily inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_sceneB
Preflight a USD or RDL scene before committing to a render.
| Name | Required | Description | Default |
|---|---|---|---|
| aov | No | color | |
| scene | Yes | ||
| width | No | ||
| camera | No | ||
| height | No | ||
| backend | No | husk | |
| denoise | No | ||
| samples | No | ||
| checkpoint_interval_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It communicates that this is a preflight check rather than a final render, but it does not explain whether a test render is actually produced, whether the operation is read-only, what side effects may occur, or what the response looks like. The render-related parameters suggest possibly more than a pure schema check, but that is left ambiguous.
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 concise and front-loaded, with no wasted words. However, it is too sparse for a tool with 9 parameters and no annotations; the absence of necessary supporting context makes it under-sized rather than ideally concise.
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?
The description captures the tool's core purpose but is incomplete for a complex invocation. It gives no sense of what a successful validation looks like, what the returned data contains, how the render-related parameters affect validation, or what 'preflight' actually evaluates. Given no output schema and no annotations, this leaves meaningful gaps for an agent.
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 provides no parameter guidance. With 9 parameters including aov, backend, checkpoint_interval_seconds, samples, and denoise, an agent cannot infer the semantics of these fields from the description alone. The description does nothing to compensate for the schema's lack of 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 uses a specific verb ('Preflight') and names the exact resource ('USD or RDL scene'). It also clearly positions the tool as a pre-render validation step, making it easy to distinguish from siblings like start_render or launch_interactive_viewer.
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?
'Before committing to a render' gives a clear context of when to use this tool. It does not explicitly name alternatives or exclusions, but the timing guidance is strong enough to route the agent toward validation before rendering.
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. Dates show when Glama detected each change.
25 tool updates
v0.1.0- First observed
cancel_render - First observed
capture_interactive_viewer_snapshot - First observed
capture_render_snapshot - First observed
compare_renders - First observed
inspect_materials - First observed
inspect_scene - First observed
interactive_viewer_preview - First observed
interactive_viewer_status - First observed
launch_interactive_viewer - First observed
moonray_capabilities - First observed
moonray_health - First observed
moonray_resources - First observed
pause_render - First observed
render_preview - First observed
render_result - First observed
render_status - First observed
resume_from_checkpoint - First observed
resume_render - First observed
run_comparison_manifest - First observed
set_interactive_viewer_denoising - First observed
set_interactive_viewer_exposure - First observed
start_render - First observed
stop_interactive_viewer - First observed
switch_interactive_viewer_aov - First observed
validate_scene
TDQS
Most tools target distinct phases: viewer control, scene inspection, render lifecycle, and comparison. A few preview/snapshot/result tools (interactive_viewer_preview vs capture_interactive_viewer_snapshot, render_preview vs render_result) could be confused, but their descriptions specify different outputs and workflows.
All names use snake_case and mostly clear, purposeful verbs. However, the set mixes verb-first names (start_render, capture_render_snapshot) with noun-first names (render_status, render_preview, moonray_health), so the naming pattern is readable but not fully consistent.
At 25 tools, this sits at the heavy end of a typical MCP server. The breadth is somewhat justified by the render/viewer/scene/comparison workflows, but several preview/capture/snapshot tools could likely be consolidated without losing capability.
The surface covers preflight, scene and material inspection, viewer interaction, render job lifecycle, snapshots, previews, and image comparison. Minor gaps exist, such as explicit render-settings configuration and more granular control over comparison thresholds, but agents can complete core rendering workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
HTML-to-PDF MCP server — render pixel-faithful PDFs from HTML.
Hosted MCP server for task-first delegation to remote workstations and workers.
AutoRender's MCP server for media assets, transformations, delivery, and workflow automation.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceConnects MCP-compatible clients to a live Blender scene for AI-assisted 3D workflows, enabling inspection and controlled operations on objects, materials, cameras, lights, render settings, animation, UVs, Geometry Nodes, imports, exports, and Python execution.1MIT
- AlicenseAqualityAmaintenanceA local MCP server that enables AI apps to control KeyShot Studio for scene inspection, rendering, model import, material application, camera adjustment, environment setting, and scene saving.1942112MIT
- AlicenseAqualityBmaintenanceConnects MCP clients to a local Blender + Bonsai (BlenderBIM) session for scene inspection, IFC project querying, viewport screenshots, and executing Python code in Blender.86MIT
- AlicenseBqualityAmaintenanceEnables MCP clients to execute Materials Studio modeling and computation tasks via MaterialsScript runtime, with a local Dashboard for monitoring.3316MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tylerart3d/moonray_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server