# KeyShot MCP (npm · keyshot-mcp)

Control local KeyShot scenes, cameras, environments, and renders through headless scripting.

- Trust score: 80/100 (high trust)
- Change this week: +32
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `keyshot-mcp`: 80/100 (this document), [markdown](https://verifymcp.io/servers/truman-t3-keyshot-mcp/keyshot-mcp.md), [page](https://verifymcp.io/servers/truman-t3-keyshot-mcp/keyshot-mcp)

## Channel facts

- Registry: `npm`
- Package: `keyshot-mcp`
- Version: `0.9.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to truman-t3/keyshot-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 80/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3535 tokens (~196/item across 18 items; 17 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add truman-t3-keyshot-mcp -- npx -y keyshot-mcp
```

### Codex

```bash
codex mcp add truman-t3-keyshot-mcp -- npx -y keyshot-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "truman-t3-keyshot-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "keyshot-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add truman-t3-keyshot-mcp --command npx --arg -y --arg keyshot-mcp
```

### Hermes

```yaml
mcp_servers:
  truman-t3-keyshot-mcp:
    command: "npx"
    args: ["-y", "keyshot-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "truman-t3-keyshot-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "keyshot-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 80, +10)

- [functional regression] Schema quality: pass → fail
- [functional improvement] Tool coverage: 0% → 100%
- [functional improvement] Stability: unverified → 0.23
- [functional] First check of Tool coverage: 100
- [functional] Schema quality: poor → excellent
- [functional] Package version: 0.9.0 → 0.9.1

### 2026-08-02 (score 70, +42)

- [security improvement] Provenance: unverified → pass
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [security] The attested source repository moved: truman-t3/keyshot-mcp
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Security disclosure: fail → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Schema quality: unverified → poor
- [functional] Licence: MIT

### 2026-08-01 (score 28, +5)

- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] MCP protocol: unverified → pass

### 2026-07-31 (score 23, −1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 24, −24)

- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified

### 2026-07-27 (score 48)

First indexed and scored.

## MCP tools (17)

### `keyshot_status` (~46 tokens)

Check KeyShot MCP status

Diagnose the local KeyShot MCP installation before editing or rendering. Checks configuration, output access, presets, bridge files, and a minimal KeyShot headless startup without modifying a user scene.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_product_render` (~841 tokens)

Prepare and render a product

Use this high-level tool for a complete product workflow in one KeyShot headless process: open a scene or import a model, apply object-specific materials, configure camera and environment, save a scene copy, and render one or all cameras. Prefer lower-level tools only when the individual stages need separate control.

Input parameters:

- `adjustCameraLookAt` (boolean): Retarget the camera after model import. Applies only to modelPath sources and defaults to true for new models.
- `adjustEnvironment` (boolean): Adjust the environment after model import. Applies only to modelPath sources and defaults to true for new models.
- `baseScenePath` (string): Optional KeyShot base scene used only when modelPath is provided.
- `brightness` (number): Positive brightness multiplier for the active environment.
- `cameraName` (string): Camera to create, update, or activate. New model workflows default to Product Hero.
- `cameraPresetName` (string): Configured camera preset to apply. Cannot be combined with a custom position/lookAt pair.
- `centerGeometry` (boolean): Center imported geometry. Applies only to modelPath sources and defaults to true for new models.
- `continueOnError` (boolean): In allCameras mode, continue after one camera fails. Defaults to true.
- `distance` (number): Positive KeyShot camera distance applied after the transform or preset.
- `environmentName` (string): Environment name from the KeyShot library. Cannot be combined with environmentPath.
- `environmentPath` (string): Absolute path to a local KeyShot environment file. Cannot be combined with environmentName.
- `fieldOfView` (number): Camera field of view in degrees, greater than 0 and less than 180. Cannot be combined with focalLength.
- `focalLength` (number): Camera focal length from 5 to 200 mm. Cannot be combined with fieldOfView.
- `format` (string): Output image format. Defaults to PNG when omitted.
- `height` (integer): Render height in pixels. Overrides the selected quality preset when provided.
- `lookAt` (array): Camera target [x, y, z]. Must be provided together with position.
- `materialAssignments` (array): Object-specific material changes applied before camera and environment setup.
- `maxTimeSeconds` (number): Maximum render time in seconds. Selects time-based rendering and cannot be combined with samples.
- `modelPath` (string): Absolute path to a model to import. Provide exactly one modelPath or scenePath.
- `outputDir` (string): All-cameras output directory. Invalid with single mode; a safe directory is generated when omitted.
- `outputPath` (string): Single-mode image destination. Invalid with allCameras mode; a safe name is generated when omitted.
- `outputScenePath` (string): Destination for the prepared scene. A safe numbered name is generated when omitted.
- `overwrite` (boolean): Allow replacement of explicitly selected output files. Defaults to false.
- `position` (array): Camera position [x, y, z]. Must be provided together with lookAt.
- `qualityPreset` (string): Render quality preset: preview (960x540, 16 samples), standard (1920x1080, 64 samples), or final (3840x2160, 256 samples).
- `renderMode` (string): Render one active or named camera, or discover and render every saved camera. Defaults to single.
- `rotation` (number): Environment rotation in degrees, from 0 inclusive to 360 exclusive.
- `samples` (integer): Maximum render samples. Cannot be combined with maxTimeSeconds and overrides preset sampling when provided.
- `scenePath` (string): Absolute path to an existing KeyShot scene. Provide exactly one scenePath or modelPath.
- `snapToGround` (boolean): Place imported geometry on the ground. Applies only to modelPath sources and defaults to true for new models.
- `up` (array): Optional camera up direction [x, y, z]. Requires position and lookAt.
- `width` (integer): Render width in pixels. Overrides the selected quality preset when provided.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_inspect_scene` (~80 tokens)

Inspect a KeyShot scene

Open an existing KeyShot scene read-only and return scene metadata, objects, cameras, material assignments, model sets, and external references. Use this before targeted material or camera edits when names are unknown.

Input parameters:

- `scenePath` (string, required): Absolute path to an existing KeyShot scene file to open. Input files may be outside the configured output directory.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_list_cameras` (~84 tokens)

List scene cameras

Open a KeyShot scene without saving changes and return its saved camera names. Use this before keyshot_batch_render when only selected views should be rendered; use keyshot_render_all_cameras when no manual selection is needed.

Input parameters:

- `scenePath` (string, required): Absolute path to an existing KeyShot scene file to open. Input files may be outside the configured output directory.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_render` (~286 tokens)

Render one KeyShot view

Render one active or named camera from an existing KeyShot scene to an image file. Use keyshot_batch_render for selected cameras, keyshot_render_all_cameras for every camera, or keyshot_product_render when scene preparation is also required.

Input parameters:

- `camera` (string): Optional saved camera name to activate before rendering. Omit to use the scene's active camera.
- `format` (string): Output image format. Defaults to PNG when omitted.
- `height` (integer): Render height in pixels. Overrides the selected quality preset when provided.
- `maxTimeSeconds` (number): Maximum render time in seconds. Selects time-based rendering and cannot be combined with samples.
- `outputPath` (string): Destination image path. When omitted, a PNG name is generated inside KEYSHOT_OUTPUT_DIR.
- `qualityPreset` (string): Render quality preset: preview (960x540, 16 samples), standard (1920x1080, 64 samples), or final (3840x2160, 256 samples).
- `samples` (integer): Maximum render samples. Cannot be combined with maxTimeSeconds and overrides preset sampling when provided.
- `scenePath` (string, required): Absolute path to an existing KeyShot scene file to open. Input files may be outside the configured output directory.
- `width` (integer): Render width in pixels. Overrides the selected quality preset when provided.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_render_queue` (~85 tokens)

Run a sequential render queue

Render multiple independent scene and camera jobs sequentially so KeyShot processes do not compete for a license or output files. Stops after the first failure unless continueOnError is enabled.

Input parameters:

- `continueOnError` (boolean): Continue with later jobs after a failure. Defaults to false.
- `jobs` (array, required): Render jobs executed sequentially to avoid KeyShot license and output conflicts.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_batch_render` (~308 tokens)

Render selected cameras

Render an explicit list of saved camera names from one KeyShot scene into an output directory. Use keyshot_list_cameras first when camera names are unknown; use keyshot_render_all_cameras to discover and render every camera automatically.

Input parameters:

- `cameras` (array, required): Saved camera names to render in order. Use keyshot_list_cameras first when names are unknown.
- `format` (string): Output image format. Defaults to PNG when omitted.
- `height` (integer): Render height in pixels. Overrides the selected quality preset when provided.
- `maxTimeSeconds` (number): Maximum render time in seconds. Selects time-based rendering and cannot be combined with samples.
- `outputDir` (string, required): Directory for generated render files. Relative paths resolve inside KEYSHOT_OUTPUT_DIR; external paths are rejected by default.
- `overwrite` (boolean): Whether existing image files may be replaced. Defaults to false.
- `qualityPreset` (string): Render quality preset: preview (960x540, 16 samples), standard (1920x1080, 64 samples), or final (3840x2160, 256 samples).
- `samples` (integer): Maximum render samples. Cannot be combined with maxTimeSeconds and overrides preset sampling when provided.
- `scenePath` (string, required): Absolute path to an existing KeyShot scene file to open. Input files may be outside the configured output directory.
- `width` (integer): Render width in pixels. Overrides the selected quality preset when provided.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_render_all_cameras` (~303 tokens)

Render all scene cameras

Discover every saved camera in a KeyShot scene and render each view in one headless process. Safe file names are generated from camera names; duplicate names are numbered and per-camera failures can be reported while remaining views continue.

Input parameters:

- `continueOnError` (boolean): Continue rendering remaining cameras after one camera fails. Defaults to true.
- `format` (string): Output image format. Defaults to PNG when omitted.
- `height` (integer): Render height in pixels. Overrides the selected quality preset when provided.
- `maxTimeSeconds` (number): Maximum render time in seconds. Selects time-based rendering and cannot be combined with samples.
- `outputDir` (string, required): Directory for generated render files. Relative paths resolve inside KEYSHOT_OUTPUT_DIR; external paths are rejected by default.
- `overwrite` (boolean): Whether existing image files may be replaced. Defaults to false.
- `qualityPreset` (string): Render quality preset: preview (960x540, 16 samples), standard (1920x1080, 64 samples), or final (3840x2160, 256 samples).
- `samples` (integer): Maximum render samples. Cannot be combined with maxTimeSeconds and overrides preset sampling when provided.
- `scenePath` (string, required): Absolute path to an existing KeyShot scene file to open. Input files may be outside the configured output directory.
- `width` (integer): Render width in pixels. Overrides the selected quality preset when provided.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_import_model` (~238 tokens)

Import a model into KeyShot

Import a supported local model into an empty scene or optional base scene, apply requested import composition options, and save the result to a new scene path. This tool does not render; use keyshot_product_render for an import-to-image workflow.

Input parameters:

- `adjustCameraLookAt` (boolean): Ask KeyShot to retarget the active camera to the imported geometry when supported.
- `adjustEnvironment` (boolean): Ask KeyShot to adjust the environment to the imported geometry when supported.
- `baseScenePath` (string): Optional existing KeyShot scene to use as the import base. Omit to start from an empty scene.
- `centerGeometry` (boolean): Ask KeyShot to center imported geometry during import when supported.
- `modelPath` (string, required): Absolute path to a model file supported by KeyShot, such as OBJ, FBX, STL, or glTF.
- `outputScenePath` (string, required): Destination path for the saved KeyShot scene. The path must stay inside KEYSHOT_OUTPUT_DIR unless external outputs are explicitly enabled.
- `snapToGround` (boolean): Ask KeyShot to place imported geometry on the ground plane when supported.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_apply_material` (~223 tokens)

Apply a KeyShot material

Apply one KeyShot library material name or local material file to a specific scene object, then save the edited scene to the requested output path. Use objectPath when duplicate object names exist; use keyshot_apply_material_preset for a configured reusable preset.

Input parameters:

- `materialName` (string): Material name from the local KeyShot library. Provide either materialName or materialPath.
- `materialPath` (string): Absolute path to a local KeyShot material file. Provide either materialPath or materialName.
- `objectName` (string): Scene object name to modify. Provide either objectName or the more specific objectPath.
- `objectPath` (string): Full scene-tree path of the object to modify. Use this instead of objectName when names are duplicated.
- `outputScenePath` (string, required): Destination path for the saved KeyShot scene. The path must stay inside KEYSHOT_OUTPUT_DIR unless external outputs are explicitly enabled.
- `scenePath` (string, required): Absolute path to an existing KeyShot scene file to open. Input files may be outside the configured output directory.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_list_material_presets` (~47 tokens)

List material presets

Read the configured local material preset JSON and return valid preset names and material sources without opening KeyShot or modifying files. Use a returned name with keyshot_apply_material_preset.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_apply_material_preset` (~188 tokens)

Apply a material preset

Resolve a named preset from the configured material preset library, apply it to one scene object, and save a new KeyShot scene. List presets first when the name is unknown; use keyshot_apply_material for a direct library name or material file.

Input parameters:

- `objectName` (string): Scene object name to modify. Provide either objectName or objectPath.
- `objectPath` (string): Full scene-tree path to modify. Prefer this when object names are duplicated.
- `outputScenePath` (string, required): Destination path for the saved KeyShot scene. The path must stay inside KEYSHOT_OUTPUT_DIR unless external outputs are explicitly enabled.
- `presetName` (string, required): Case-insensitive material preset name returned by keyshot_list_material_presets.
- `scenePath` (string, required): Absolute path to an existing KeyShot scene file to open. Input files may be outside the configured output directory.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_set_camera` (~281 tokens)

Set a KeyShot camera

Create or update a named camera using a position and target, distance, field of view, or focal length, then save the edited scene. Position and lookAt must be supplied together; fieldOfView and focalLength select mutually exclusive lens modes.

Input parameters:

- `cameraName` (string): Saved camera to update, or the name to use when creating a camera.
- `distance` (number): Positive KeyShot camera distance.
- `fieldOfView` (number): Field of view in degrees, greater than 0 and less than 180. Cannot be combined with focalLength.
- `focalLength` (number): Focal length from 5 to 200 mm. Cannot be combined with fieldOfView.
- `lookAt` (array): Camera target [x, y, z]. Must be provided together with position.
- `outputScenePath` (string, required): Destination path for the saved KeyShot scene. The path must stay inside KEYSHOT_OUTPUT_DIR unless external outputs are explicitly enabled.
- `position` (array): Camera position [x, y, z]. Must be provided together with lookAt.
- `scenePath` (string, required): Absolute path to an existing KeyShot scene file to open. Input files may be outside the configured output directory.
- `up` (array): Optional camera up direction [x, y, z]. Requires position and lookAt.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_list_camera_presets` (~46 tokens)

List camera presets

Read the configured camera preset JSON and return valid standard or absolute camera presets without opening KeyShot or modifying files. Use a returned name with keyshot_apply_camera_preset.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_apply_camera_preset` (~158 tokens)

Apply a camera preset

Create or update a saved camera from a configured standard view or absolute camera preset, then save the edited scene. List camera presets first when the name is unknown; use keyshot_set_camera for direct transform or lens control.

Input parameters:

- `cameraName` (string): Optional saved camera name. Defaults to the preset name.
- `outputScenePath` (string, required): Destination path for the saved KeyShot scene. The path must stay inside KEYSHOT_OUTPUT_DIR unless external outputs are explicitly enabled.
- `presetName` (string, required): Case-insensitive camera preset name returned by keyshot_list_camera_presets.
- `scenePath` (string, required): Absolute path to an existing KeyShot scene file to open. Input files may be outside the configured output directory.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_set_environment` (~190 tokens)

Set the KeyShot environment

Select a KeyShot environment by library name or local file, optionally change brightness and rotation, and save the edited scene. Unsupported environment APIs return a clear error instead of silently ignoring requested changes.

Input parameters:

- `brightness` (number): Positive brightness multiplier for the active environment.
- `environmentName` (string): Environment name from the KeyShot library. Cannot be combined with environmentPath.
- `environmentPath` (string): Absolute path to a local KeyShot environment file. Cannot be combined with environmentName.
- `outputScenePath` (string, required): Destination path for the saved KeyShot scene. The path must stay inside KEYSHOT_OUTPUT_DIR unless external outputs are explicitly enabled.
- `rotation` (number): Environment rotation in degrees, from 0 inclusive to 360 exclusive.
- `scenePath` (string, required): Absolute path to an existing KeyShot scene file to open. Input files may be outside the configured output directory.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

### `keyshot_save_scene` (~110 tokens)

Save a KeyShot scene copy

Open an existing KeyShot scene and save it to a requested output path inside the configured safe output directory. Use this for an explicit scene copy; editing tools already save their own output scenes.

Input parameters:

- `outputScenePath` (string, required): Destination path for the saved KeyShot scene. The path must stay inside KEYSHOT_OUTPUT_DIR unless external outputs are explicitly enabled.
- `scenePath` (string, required): Absolute path to an existing KeyShot scene file to open. Input files may be outside the configured output directory.

Output parameters:

- `data`: Operation-specific structured result data, or null when unavailable.
- `error` (string|null): Human-readable failure reason, or null after success.
- `errorCode` (string|null): Stable error category for common failures.
- `keyshotStdoutTail` (string): Truncated tail of KeyShot headless output for diagnostics.
- `ok` (boolean): True when the requested operation completed successfully.
- `outputFiles` (array): Absolute paths of images or scene files created by the operation.
- `suggestions` (array): Actionable recovery steps for the user or agent.
- `warnings` (array): Non-fatal conditions the user or agent should review.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/truman-t3-keyshot-mcp/keyshot-mcp#diagnostics

## Score history

- 2026-08-03: 80
- 2026-08-02: 70
- 2026-08-01: 28
- 2026-07-31: 23
- 2026-07-30: 24
- 2026-07-28: 48
- 2026-07-27: 48

## Links

- npm package: https://www.npmjs.com/package/keyshot-mcp
- Socket report: https://socket.dev/npm/package/keyshot-mcp
- Repository: https://github.com/truman-t3/keyshot-mcp
- Changelog RSS feed: https://verifymcp.io/servers/truman-t3-keyshot-mcp/keyshot-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/truman-t3-keyshot-mcp/keyshot-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/truman-t3-keyshot-mcp/keyshot-mcp
